4

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

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

- 这是双向同步文件,还是仅将源同步到目标?- 如果一个文件之前在两个文件夹之间同步,但因为不再需要而被删除,它会在源和目标上都被删除,还是总是被复制到它丢失的地方?

4

2 回答 2

4

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

如果您想在两台机器上保留最新的更改,则必须提供更复杂的 rsync 咒语并将两台机器设置为 rsync 服务器。我想这样做最终会给你带来麻烦,特别是如果你想成为专制而不是删除。

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

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

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

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

于 2012-12-10T01:25:03.737 回答
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 的内容。

于 2012-12-25T16:08:35.890 回答