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/)?

artella
fonte

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

jdw
fonte
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.

agtb
fonte
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