我有一个文件夹a /和一个远程文件夹A /。
现在,我在Makefile上运行以下内容:
get-music:
rsync -avzru server:/media/10001/music/ /media/Incoming/music/
put-music:
rsync -avzru /media/Incoming/music/ server:/media/10001/music/
sync-music: get-music put-music
当我制作sync-music时,它首先将所有差异从服务器发送到本地,然后将相反的内容从本地发送到服务器。
仅当将来只有更新或新文件时,此方法才能很好地工作。如果有删除,则不执行任何操作。
在rsync中,有--delete和--delete-after选项可帮助完成我想要的操作,但事实是,它在2向同步中不起作用。
如果我想删除Syn上的服务器文件,则删除本地文件后,它可以工作,但是如果由于某种原因(稍后说明),我有一些不在服务器中但在本地存在的文件被删除,我想在本地删除它们,而不是服务器复制(发生这种情况)。
我在上下文中有3台机器:
因此,有时,服务器将具有通过笔记本同步删除的文件,例如,然后,当我与桌面运行同步时(已删除的服务器文件仍然存在),我希望这些文件被删除而不是被删除。再次复制到服务器。
我猜这只有在数据库和操作轨迹下才有可能:P
还有更简单的解决方案吗?
谢谢。
最佳答案
试试Unison:http://www.cis.upenn.edu/~bcpierce/unison/
句法:unison dirA/ dirB/
Unison询问文件不同时该怎么办,但是您可以通过使用以下接受默认(无冲突)选项的自动化操作:unison -auto dirA/ dirB/
unison -batch dirA/ dirB/
完全不问任何问题,并写输出忽略了多少文件(因为它们有冲突)。