我找不到任何适用于我的 Mac 的可靠文件同步程序,所以我一直在两个文件夹之间使用命令行 Rsync。
我一直在使用“rsync -r source destination”。
- 这是双向同步文件,还是仅将源同步到目标?- 如果一个文件之前在两个文件夹之间同步,但因为不再需要而被删除,它会在源和目标上都被删除,还是总是被复制到它丢失的地方?
我找不到任何适用于我的 Mac 的可靠文件同步程序,所以我一直在两个文件夹之间使用命令行 Rsync。
我一直在使用“rsync -r source destination”。
- 这是双向同步文件,还是仅将源同步到目标?- 如果一个文件之前在两个文件夹之间同步,但因为不再需要而被删除,它会在源和目标上都被删除,还是总是被复制到它丢失的地方?
不,rsync
会将远程目录的内容同步到本地目录。在这方面,它是单向的。或者,您可以强制它删除远程文件夹中不再存在的本地文件。
如果您想在两台机器上保留最新的更改,则必须提供更复杂的 rsync 咒语并将两台机器设置为 rsync 服务器。我想这样做最终会给你带来麻烦,特别是如果你想成为专制而不是删除。
在任何情况下,您都可以使用-u
(or --update
) 选项,该选项将跳过目标端的任何较新文件。您确实必须担心时间戳,这不会处理任何冲突或合并。仍然......它可能很简单:
rsync -u -r target1 target2
rsync -u -r target2 target1
这对删除没有任何作用。您无法知道一个目标上丢失的文件在那里被删除,而不是在另一个目标上创建了一个新文件。
这就是发明版本控制的原因......对于害怕版本控制的人来说,存在像 DropBox 这样的服务。
回答原始问题:
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 的内容。