Eu tenho uma grande pasta "X" no meu diretório pessoal e uma cópia desatualizada em uma unidade flash - Y. Qual é o análogo rm Y; cp X Y
, mas sem substituir os arquivos já existentes?
23
Há muito mais propriedades para rsync do que a resposta anterior menciona. Você deve examiná-los você mesmo:
man rsync
Mas, para o seu problema, sugiro:
rsync -a --delete X Y
Dessa forma, o receptor (Y) excluirá qualquer arquivo que não esteja no X. Certifique-se de fazer o procedimento corretamente. Usado incorretamente como root, pode facilmente matar o seu sistema ... :)
rsync -a --delete X/ Y
. Essa pequena barra após o X fez com que funcionasse como pretendido para mim, de modo que poderia ajudar outros também. Explicado aqui: abbeyworkshop.com/howto/unix/nix_rsync/index.htmlDê uma olhada no rsync (1) . Ele pretende fazer exatamente o que você deseja.
Ele suporta cópia remota, através de seu próprio protocolo ou ssh, mas também pode ser usado localmente.
Dependendo do comportamento exato desejado, você também pode passar a
--update
opção. Isso instruirá o rsync a não substituir arquivos que já existem no destino e são mais novos que os da fonte.Se você deseja remover arquivos extras (ou seja, arquivos que existem em Y, mas não em X), você pode adicionar a
--delete
opção.fonte
rm Y; cp X Y
.Tente usar o rsnyc, possivelmente com o seguinte comando:
-u
= não sobrescreva um arquivo no destino, se ele for modificadofonte
rm Y; cp X Y
.Eu acho que algumas das funcionalidades que você está procurando na opção -u (atualização) realmente existem nesta opção:
"--ignore-existente" - pula a atualização de arquivos existentes no receptor
fonte