Rsync是否允许文件双向同步?


25

我已经使用cygwin和rsync备份了Linux Web服务器。现在,我在Windows笔记本电脑上拥有服务器的完美副本。如果我删除或修改笔记本电脑上的文件并再次使用cygwin运行rsync,它将删除/更新服务器上的相同文件吗?我的印象是,如果我在服务器上删除/修改并在笔记本电脑上运行rsync,它将删除/修改笔记本电脑上的本地文件,但这是否相反?


12
这不是您问题的答案,但您应该看看unison。这是一个同步工具,可以在两个副本上保存文件状态,因此可以进行双向同步。还有一个cygwin软件包。
2014年

Answers:


29

Rsync执行一种单向同步,但是您可以决定同步的方式。

Rsync命令语法如下:

rsync [OPTION...] SRC... [DEST]

请注意,您指定了从源到目标的同步。源和目标可以是任何本地或远程路径。

例如,如果要将文件从服务器复制到笔记本电脑,请执行以下操作:

rsync [OPTION...] <server-path> <laptop-path>

要以相反的方向进行同步,请执行以下操作:

rsync [OPTION...] <laptop-path> <server-path>

因此,回答您的问题:这取决于您如何执行rsync。

如果要在目标位置删除文件,则需要使用--delete选项。但是要小心,因为如果在指定来源时出错,那么最终将删除目的地上的所有内容。首先测试不带--delete选项的同步是比较安全的,一旦对它的工作方式感到满意,就可以添加--delete选项。

masegaloeh在下面的注释中所建议的,-n或者--dry-run选项也可以用于测试rsync命令行为。


9
附加说明:为了测试rsync行为,您可以使用参数-n--dry-run,这样您就知道要删除和修改哪个文件
masegaloeh 2014年

1

使用python3编写的包装工具,bsync该工具可以包装findrsync命令,从而简化了任务。Github仓库:https : //github.com/dooblem/bsync

当它在github上时不要害怕(即以某种方式,您认为您必须是程序员才能使用该工具)。


-1

考虑使用--delete-after而不是--delete,这将确保您的接收端将在传输之后而不是在传输之前删除文件。


我认为下降投票是因为OP并未试图rsync删除任何内容。他自己删除东西。话虽如此,对于rsync'ing总体而言还是有用的提示。谢谢。
哈珀维尔
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.