Como substituir todo o conteúdo de uma pasta por outra


23

Eu tenho pastas olde new.

Quero substituir todo o conteúdo em old/*a new/*. Pode haver muitos subdiretórios nessas pastas.

Mas pode haver poucos arquivos que não estão, new/*mas estão old/*, então eu quero que eles permaneçam como estão.

Como posso fazer isso a partir de um shell Linux?

Respostas:


18

O rsync provavelmente seria uma opção melhor aqui. É tão simples quanto rsync -a subdir / ./. verifique esta resposta unix.stackexchage para obter melhores soluções

use -fcom o cpcomando

cp -fR /source/files /dest

suprimir cp para substituir "prompt ..

Para substituir o alias do cp, basta colocá-lo entre aspas:

 'cp' -rf ./source/* /destination/

para mais informações, siga estes links:

http://www.wallpaperama.com/forums/cp-command-problems-forcing-overwrite-using-cp-command-t5685.html

http://bytes.com/topic/unix/answers/865372-force-cp-overwrite-existing-directory


23

Use rsync. Ele sincronizará os diretórios em uma direção. Portanto, se você deseja atualizar sua oldpasta com tudo new, mas mantenha o conteúdo, basta usar:

rsync -avh --dry-run /path/to/new/ /path/to/old/

Isso, em primeira instância, apenas gera a lista de arquivos que seriam transferidos. Nesse caso: Tudo o que for encontrado newserá copiado para old, a menos que já esteja lá. Tudo oldpermanece como está.

Se lhe parecer bom, remova o --dry-runargumento para transmiti-los de verdade.

Os -avhsinalizadores apenas ativam o modo de arquivamento (que preservará carimbos de data e hora, etc.), verbosidade e tamanhos de arquivo legíveis por humanos. Nada será excluído do destino, a menos que você especifique o --deletesinalizador. Consulte man rsyncpara mais informações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.