Rsync 并考虑名称/路径更改

Rsync 并考虑名称/路径更改

我维护一个大文件夹,并且该文件夹定期同步到远处的另一个文件夹。

有时我更改本地文件夹的名称,然后下次我rsync到远程文件夹时需要发送整个文件,即使唯一需要发送的实际上是文件名已更改的信息。

有什么方法可以rsync找出名称/路径更改吗?

我在这里浏览了一下:http://linux.die.net/man/1/rsync,但找不到类似的东西。

答案1

如果本地和远程服务器都支持进行硬链接的能力,您可以使用此技巧来获得您想要的东西。这篇博客文章讨论了该方法,标题为:使用 Rsync 检测文件移动和重命名

常规步骤

  1. 正常同步

    $ rsync -avHP --delete-after ~/family/Photos remotebox:backups
    
  2. 现在做一些改变

    $ cd ~/family
    $ cp -rlp Photos Photos-work
    

    当其开关为:复制目录 *R* 递归 + *L*ink 文件而不是复制 + *P* 保留模式、所有权和时间戳(对于非硬链接内容,例如目录)时,cp 完成得非常快

    在 Photos-work 目录中进行重组:您可以重命名、移动、添加和删除任何文件。但不要触摸 Photos 中的树,该目录(两台计算机上具有相同的路径集)将允许 rsync 快速找到要在远程计算机上的 Photos-work 下克隆的数据。

  3. 完成重组后,运行以下命令:

    $ rsync -avHP --delete-after --no-inc-recursive ~/family/Photos ~/family/Photos-work remotebox:backups
    

    通过同时传输两棵树并关闭增量递归,rsync 在传输任何内容之前收集所有硬链接。现在,它可以在几秒钟内重建远程计算机上的照片作品。接下来您将通过以下方式完成:

    $ mv Photos Photos-OLD
    $ mv Photos-work Photos
    

    您可以在本地和远程计算机上执行此操作。您可以根据需要保留 OLD 目录,它所占用的空间通常可以忽略不计。

答案2

齐奏比 raw 更有可能做你想做的事rsync。它使用该rsync协议来同步文件。

相关内容