Como posso copiar um diretório (grande) sobre outro, alterando apenas os arquivos diferentes?

Como posso copiar um diretório (grande) sobre outro, alterando apenas os arquivos diferentes?

Eu tenho o diretório a e o diretório b. Eles são grandes. b é quase idêntico a a. "quase" significa que 4 a 5 arquivos diferem e não sei quais são. Quero copiar b sobre a, mas apenas os arquivos que diferem. estou na festa.

(não, não posso simplesmente excluir a e substituí-lo por b, porque 1) a é controlado por versão 2) uma cópia completa (ou um mv) demoraria muito. Quero copiar apenas os arquivos que diferem).

Responder1

Você pode usar rsyncpara fazer isso, o comando que eu uso érsync -tr "folder to copy from" "folder to copy to"

por exemplorsync -tr /home/me/stuff/* /home/me/otherstuff/

Responder2

Também é possível fazer isso com o bom e velho cp:

Obrigado ao srcspider por me lembrar de usar -T!

cp -ruT old-dir new-dir

Responder3

Outra boa opção é Unison (http://www.cis.upenn.edu/~bcpierce/unison/), especialmente se não houver realmente uma "fonte" e um "destino". Cada diretório é uma raiz e o Unison os sincroniza e mantém metadados para sincronizações futuras. Ele oferece uma opção de linha de comando e GUI que também pode ser facilmente agendada via cron.

Eu o uso para fazer um backup do meu Dropbox para o meu dispositivo NAS local que não pode executar um cliente Dropbox.

Responder4

Você pode diferenciar os 2 diretórios.

diff -r diretório1 diretório2

ele irá mostrar a lista de arquivos que são diferentes

informação relacionada