rsync:仅在一个方向上传输文件


21

是否可以使用rsync仅向一个方向复制文件?

例如,假设我们有:

left/a.txt

right/a.txt

文件最初是相同的。

如果随后进行了修改right/a.txt,则:

rsync -avv left/ right/

将复制right/a.txtleft/a.txt

是否可以将rsync限制为仅复制自left/right/(即防止它复制right/left/)?

Answers:


33

您误解了rsync。该命令:

rsync -avv left/ right/ 

不会从右到左同步任何内容。就像@atbg所说的,它只会从左到右同步。Rsync不是双向同步器。它将目标与源同步。

手册页供参考:http : //linux.die.net/man/1/rsync


有趣的是,当至少运行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


2
请记住,如果有疑问,该--dry-run选项将为您显示将要传输但未实际执行传输的文件的列表。我将其添加到所有命令的开头,rsync以防万一,即使我确定命令正确无误。
slillibri 2011年

1
鉴于对rsync的操作感到困惑,也许值得一提的是rsync的--update选项,该选项将跳过(不同步)modified在接收端具有较新时间的文件。
理查德·迈克尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.