rsync: przesyłanie plików tylko w jednym kierunku

21

Czy można używać rsync do kopiowania plików tylko w jednym kierunku?

Załóżmy na przykład, że mamy:

left/a.txt

right/a.txt

gdzie pliki są początkowo identyczne.

Jeśli ktoś następnie zmodyfikuje right/a.txt, to:

rsync -avv left/ right/

skopiuje right/a.txtna left/a.txt.

Czy jest możliwe ograniczenie rsync do kopiowania tylko z left/do right/(tj. Zapobieganie kopiowaniu z right/do left/)?

artella
źródło

Odpowiedzi:

33

Źle zrozumiałeś rsync. To polecenie:

rsync -avv left/ right/ 

nie synchronizuje niczego od prawej do lewej. Będzie, jak mówi @atbg, synchronizować tylko od lewej do prawej. Rsync nie jest synchronizatorem dwukierunkowym. Synchronizuje dest ze źródłem.

Strona podręcznika dla odniesienia: http://linux.die.net/man/1/rsync

jdw
źródło
Co ciekawe, podczas pracy przynajmniej wersji Mac rsync w celu synchronizacji zdalnego katalogu przez ssh jest on dwukierunkowy - np.rsync -avzz -e "ssh -p 2222" /source/ /target/
geotheory
4

Powinno rsync [OPTION...] SRC... [DEST]tak być, więc działa w tym kierunku (chyba że zmienisz dest i src).

left/a.txtnależy skopiować do 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

Jeśli są określone pliki, których rsync nie chce uwzględniać, spójrz na --exclude=PATTERNi --exclude-from=FILE.

agtb
źródło
2
I pamiętaj, że w razie wątpliwości --dry-runopcja wyświetli listę plików, które zostałyby przesłane, ale w rzeczywistości nie zostały wykonane. Dodam to na początku każdego rsyncze względów ostrożności, nawet jeśli jestem pewien, że polecenie jest prawidłowe.
slillibri,
1
Biorąc pod uwagę zamieszanie związane z działaniem rsync, być może warto zwrócić uwagę na --updateopcję rsync , która pomija (nie synchronizuje) pliki, które mają nowszą modifieddatę po stronie odbierającej.
Richard Michael