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

19

Eu tenho pastas old e new .

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

Mas pode haver alguns arquivos que não estão em new/* , mas estão em old/* , então quero que eles fiquem como estão.

Como posso fazer isso a partir de um shell Linux?

    
por user105919 18.11.2011 / 11:10

2 respostas

16

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

use -f com o comando cp

cp -fR /source/files /dest

suprimir cp para substituir "prompt ..

Para substituir o alias do cp, você pode simplesmente colocá-lo entre aspas:

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

para mais informações, siga estes links:

link

link

    
por 18.11.2011 / 11:24
19

Use rsync . Ele irá sincronizar os diretórios em uma direção. Então, se você quiser atualizar sua pasta old com tudo de new , mas mantenha o que está lá, use:

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

Isso, em um primeiro momento, apenas mostrará a lista de arquivos que seriam transferidos. Nesse caso: Tudo encontrado em new será copiado para old , a menos que já esteja lá. Tudo em old permanece como está.

Se parecer bem para você, remova o argumento --dry-run para transmiti-lo para real.

Os sinalizadores -avh apenas ativam o modo de arquivamento (que preservará registros de data e hora, etc.), verbosidade e tamanhos de arquivo legíveis. Nada será excluído do destino, a menos que você especifique o --delete flag. Consulte man rsync para mais informações.

    
por 18.11.2011 / 11:16

Tags