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 rsync
para 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