Eu tenho o diretório ae o diretório b. Eles são grandes. b é quase idêntico a a. "quase" significa que 4-5 arquivos diferem, e eu 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) exigiria muito. Quero copiar apenas os arquivos que diferem).
linux
bash
cp
file-transfer
janesconference
fonte
fonte
rsync
uma opção?Respostas:
Você pode usar
rsync
para fazer isso, o comando que eu uso érsync -tr "folder to copy from" "folder to copy to"
por exemplo
rsync -tr /home/me/stuff/* /home/me/otherstuff/
fonte
Também é possível fazer isso com bons velhos tempos
cp
:Obrigado ao srcspider por me lembrar de usar
-T
!cp -ruT old-dir new-dir
fonte
Outra boa opção é o Unison ( http://www.cis.upenn.edu/~bcpierce/unison/ ), principalmente se não houver realmente uma "fonte" e um "destino". Cada diretório é uma raiz e o Unison os sincroniza e mantém os metadados para futuras sincronizações. Ele oferece uma opção de linha de comando e de GUI que também pode ser agendada facilmente via cron.
Eu o uso para fazer um backup do meu Dropbox no meu dispositivo NAS local, que não pode executar um cliente Dropbox.
fonte
PODE ser feito com um bom ol 'cp, embora com um formato ligeiramente diferente do indicado acima. Aqui está como eu fiz isso:
fonte
Você pode diferenciar os 2 diretórios.
diff -r dir1 dir2
mostrará a lista de arquivos differnet
fonte