Sincroniza duas pastas locais no bash

20

Eu tenho uma pasta grande "X" no meu diretório pessoal e uma cópia desatualizada em uma unidade flash - Y. Qual é o análogo de rm Y; cp X Y , mas sem sobrescrever arquivos já existentes?

    
por Jofsey 08.04.2012 / 12:57

4 respostas

24

Existem muito mais propriedades para rsync do que as menções de respostas anteriores. Você deve olhar para eles:

man rsync

Mas, para o seu problema, eu sugiro:

rsync -a --delete X Y

Desta forma, o receptor (Y) irá deletar qualquer arquivo que não esteja no X. Certifique-se de fazer isso certo embora. Usado incorretamente como root pode facilmente matar seu sistema ...:)

    
por 09.04.2012 / 14:14
15

Dê uma olhada no rsync (1) . O objetivo é fazer exatamente o que você quer.

rsync -av X Y

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 querer passar a opção --update . Isto irá dizer ao rsync para não sobrescrever arquivos que já existam no alvo e são mais recentes que os da fonte.

Se você quiser remover arquivos extras (ou seja, arquivos que existem em Y, mas não em X), você pode adicionar a opção --delete .

    
por 08.04.2012 / 12:59
0

Tente usar o rsnyc, possivelmente com o seguinte comando:

rsync -avzu /home/x /y

-u = não sobrescreve um arquivo no destino, se ele for modificado

    
por 08.04.2012 / 13:01
0

Acho que algumas das funcionalidades que você está procurando na opção -u (atualização) realmente existem nessa opção:

"- ignore-existing" - pula a atualização dos arquivos que existem no receptor

    
por 25.01.2014 / 01:21

Tags