我有一个文件夹 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
当我制作同步音乐时,它首先将所有差异从服务器获取到本地,然后相反,将所有差异从本地发送到服务器。
仅当将来只有更新或新文件时,这才能很好地工作。如果有删除,它不会做任何事情。
在 rsync 中有 --delete 和 --delete-after 选项来帮助完成我想要的,但事实是,它不适用于 2-way-sync。
如果我想删除 syn 上的服务器文件,当本地文件被删除时,它可以工作,但是如果由于某种原因(稍后解释)我有一些文件不在服务器中但在本地存在并且它们被删除了,我想在本地删除它们而不是服务器复制(碰巧)。
事情是我在上下文中有 3 台机器:
- 桌面
- 笔记本
- 家庭服务器
因此,有时,服务器会有一些文件被笔记本同步删除,例如,当我与我的桌面运行同步时(删除的服务器文件仍然存在),我希望这些文件被删除而不是被删除再次复制到服务器。
我想这只有通过数据库和操作跟踪才有可能:P
有更简单的解决方案吗?谢谢你。