rsync: передача файлов только в одном направлении

21

Можно ли использовать rsync для копирования файлов только в одном направлении?

Например, предположим, что мы имеем:

left/a.txt

right/a.txt

где файлы изначально идентичны.

Если кто-то затем изменяет right/a.txt, то:

rsync -avv left/ right/

будет копировать right/a.txtна left/a.txt.

Можно ли ограничить rsync только копированием из left/в right/(т.е. запретить копирование из right/в left/)?

artella
источник

Ответы:

33

Вы неправильно поняли rsync. Эта команда:

rsync -avv left/ right/ 

не будет ничего синхронизировать справа налево. Как говорит @atbg, он будет синхронизироваться только слева направо. Rsync не является двунаправленным синхронизатором. Синхронизирует dest с источником.

Справочная страница для справки: http://linux.die.net/man/1/rsync

JDW
источник
Интересно при работе , по крайней мере версию Mac в Rsync для синхронизации удаленного каталога через SSH он является двунаправленным - напримерrsync -avzz -e "ssh -p 2222" /source/ /target/
geotheory
4

Так и должно быть, rsync [OPTION...] SRC... [DEST]это работает в этом направлении (если вы не переключаете dest и src).

left/a.txtследует скопировать в 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

Если есть определенные файлы, которые вы не хотите включать в rsync, посмотрите --exclude=PATTERNи --exclude-from=FILE.

agtb
источник
2
И помните, что, если вы сомневаетесь, --dry-runопция покажет вам список файлов, которые были бы переданы, но фактически не выполняли передачу. Я добавляю это в начало каждого rsyncпросто в качестве меры предосторожности, даже если я уверен, что команда верна.
slillibri
1
Учитывая путаницу в работе rsync, возможно, стоит отметить параметр rsync --update, который пропускает (не синхронизирует) файлы, которые имеют более свежее modifiedвремя на принимающей стороне.
Ричард Майкл