关于使用Rsync的几个问题?

时间:2012-12-10 01:04:54

标签: rsync

我的Mac找不到任何可靠的文件同步程序,所以我一直在两个文件夹之间使用命令行Rsync。

我一直在使用“rsync -r source destination”。

- 这个同步文件是双向的,还是只将源同步到目的地? - 如果一个文件先前已在两个文件夹之间同步,但由于不再需要而被删除,它是否会在源和目标上被删除,还是只会被复制到缺少的位置?

2 个答案:

答案 0 :(得分:4)

不,rsync会将远程目录的内容同步到本地目录。在这方面,它是单向的。 (可选)您可以强制它删除远程文件夹中不再存在的本地文件。

如果要在两台计算机上保留最新的更改,则必须提供更复杂的rsync咒语,并将这两台计算机设置为rsync服务器。我想这样做最终会让你陷入麻烦,特别是如果你想要删除专制的话。

在任何情况下,您都可以使用-u(或--update)选项,该选项将跳过目标端较新的文件。您必须担心时间戳,这不会处理任何冲突或合并。仍然......可能很简单:

rsync -u -r target1 target2
rsync -u -r target2 target1

这对删除没有任何意义。您无法知道某个目标上的丢失文件已被删除,而不是在另一个目标上创建了新文件。

这就是发明版本控制的原因......对于害怕版本控制的人来说,像DropBox这样的服务存在。

答案 1 :(得分:1)

回答原始问题:

1)它根据拉动或推动机制仅在一个方向上同步文件。   对于推拉机制,请参见手册页“”man rsync“”。

所以,对于你的问题的其余部分,不要认为它在两者中都有效  方式。

2)文件仅在目标目录中被删除。 在rsync --help命令中获取有关此内容的更多详细信息,请参阅选项 --delete从目标目录删除无关文件 和其他删除选项。

3)如果您在远程机器/目录/

推送文件,则丢失的文件将被复制到目标目录

推送机制的示例示例: -

rsync -avz /home/local_dir/abc.txt remoteuser@192.168.xx.xx:/home/remoteuser/

如果名为abc.txt的文件已经存在于目标目录中,那么它将根据它本地端的旧版本abc.txt进行更新。 如果远程目录中不存在abc.txt,则将创建一个名为abc.txt的新文件,其中包含本地版本的abc.txt的内容

拉动机制的示例: -

rsync -avz remoteuser@192.168.xx.xx:/home/remoteuser/abc.txt /home/local_dir/

如果名为abc.txt的文件已经存在于本地目录中,那么它将根据它是否是远程端的旧版本abc.txt进行更新。 如果本地目录中不存在abc.txt,则将创建一个名为abc.txt的新文件,其中包含本地版本的abc.txt的内容