我的Mac找不到任何可靠的文件同步程序,所以我一直在两个文件夹之间使用命令行Rsync。
我一直在使用“rsync -r source destination”。
- 这个同步文件是双向的,还是只将源同步到目的地? - 如果一个文件先前已在两个文件夹之间同步,但由于不再需要而被删除,它是否会在源和目标上被删除,还是只会被复制到缺少的位置?
答案 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的内容