rsync: transferindo arquivos em uma única direção


21

É possível usar o rsync para copiar arquivos em apenas uma direção?

Por exemplo, suponha que tenhamos:

left/a.txt

right/a.txt

onde os arquivos são inicialmente idênticos.

Se alguém modificar right/a.txt, então:

rsync -avv left/ right/

irá copiar right/a.txtpara left/a.txt.

É possível restringir o rsync a copiar apenas de left/para right/(ou seja, impedi-lo de copiar de right/para left/)?

Respostas:


33

Você entende mal o rsync. Este comando:

rsync -avv left/ right/ 

não sincronizará nada da direita para a esquerda. Como o @atbg diz, sincronizará apenas da esquerda para a direita. Rsync não é um sincronizador bidirecional. Ele sincroniza o destino com a fonte.

Página do manual para referência: http://linux.die.net/man/1/rsync


Curiosamente, ao operar pelo menos a versão Mac do rsync para sincronizar o diretório remoto via ssh, é bidirecional - por exemplorsync -avzz -e "ssh -p 2222" /source/ /target/
geotheory

4

Deve ser rsync [OPTION...] SRC... [DEST]assim que funciona nessa direção (a menos que você alterne dest e src).

left/a.txtdeve ser copiado para right/a.txt:

$ echo 'left' > left/a.txt
$ echo 'right' > right/a.txt
$ cat left/a.txt && cat right/a.txt
left
right
$ rsync -avv left/ right/
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
a.txt
total: matches=0  hash_hits=0  false_alarms=0 data=5

sent 95 bytes  received 34 bytes  258.00 bytes/sec
total size is 5  speedup is 0.04
$ cat left/a.txt && cat right/a.txt
left
left

Se houver arquivos específicos que você não deseja que sejam incluídos pelo rsync, dê uma olhada em --exclude=PATTERNe --exclude-from=FILE.


2
E lembre-se, quando estiver em dúvida, a --dry-runopção mostrará uma lista dos arquivos que teriam sido transferidos, mas que na verdade não serão executados. Acrescento isso ao início de todos rsyncapenas como precaução, mesmo que eu tenha certeza de que o comando está correto.
slillibri

11
Dada a confusão sobre a operação do rsync, talvez seja interessante notar a --updateopção do rsync , que pulará (não sincronizará) os arquivos que têm um modifiedtempo mais recente no lado de recebimento.
Richard Michael
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.