我有一个文件夹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/完全不问任何问题,并写输出忽略了多少文件(因为它们有冲突)。

    10-06 05:36