我已经使用 rsync 和 cygwin 备份了 Linux Web 服务器。现在我的 Windows 笔记本电脑上有该服务器的完美副本。如果我删除或修改笔记本电脑上的文件,然后再次使用 cygwin 运行 rsync,它会删除/更新服务器上的同一文件吗?我的印象是,如果我在服务器上删除/修改文件,然后在笔记本电脑上运行 rsync,它会删除/修改笔记本电脑上的本地文件,但反过来也可以吗?
答案1
Rsync 进行单向同步,但是同步的方向由您决定。
Rsync 命令语法如下:
rsync [OPTION...] SRC... [DEST]
请注意,您指定从源到目标的同步。源和目标可以是任何本地或远程路径。
例如,如果您想将文件从服务器复制到笔记本电脑,您可以这样做:
rsync [OPTION...] <server-path> <laptop-path>
要以相反方向同步,请执行以下操作:
rsync [OPTION...] <laptop-path> <server-path>
因此,回答您的问题:这取决于您如何执行 rsync。
如果您希望删除目标上的文件,则需要使用--delete
选项。但要小心使用,因为如果您在指定源时犯了错误,那么您最终将删除目标上的所有内容。--delete
首先不使用选项测试同步会更安全,一旦您对它的工作原理感到满意,您就可以添加--delete
选项。
根据建议马塞加洛在下面的评论中,-n
或者--dry-run
选项也可以用于测试rsync
命令行为。
答案2
bsync
用python3 编写的包装器工具find
可简化rsync
此任务。 Github repo:https://github.com/dooblem/bsync
当它在 github 上时,不要感到害怕(即你认为你必须是一名程序员才能使用该工具)。
答案3
考虑使用--delete-after而不是--delete,这将确保您的接收端在传输后删除文件,而不是之前。