我维护着一个大文件夹,并且该文件夹定期与另一个文件夹rsync'sync在一起。
有时,我会在本地文件夹中更改名称,然后下次我rsync
将文件发送至远程文件夹时,即使实际上唯一需要发送的是文件名已更改的信息,也需要发送整个文件。
有什么办法可以rsync
弄清楚名称/路径的变化吗?
我在这里浏览了一下:http : //linux.die.net/man/1/rsync,找不到类似的东西。
如果本地服务器和远程服务器都支持进行硬链接的功能,则可以使用此技巧来获得所需的内容。此博客文章中讨论了该方法,该文章标题为:使用Rsync检测文件移动和重命名。
正常同步
$ rsync -avHP --delete-after ~/family/Photos remotebox:backups
现在进行一些更改
$ cd ~/family
$ cp -rlp Photos Photos-work
当cp的开关为cp时,它很快完成:以递归方式复制目录* R * + * L * ink文件,而不是复制+ * P *保留模式,所有权和时间戳(用于目录等非硬链接的内容)
在“照片工作”目录中进行重组:您可以重命名,移动,添加和删除任何文件。但是,不要触摸此目录下的Photos(在两台计算机上具有相同的路径集)中的树,这将允许rsync快速找到要复制到远程计算机上Photos-work下的数据。
完成重组后,请运行以下命令:
$ rsync -avHP --delete-after --no-inc-recursive ~/family/Photos ~/family/Photos-work remotebox:backups
通过一次传输两个树并关闭增量递归,rsync会在传输任何内容之前收集所有硬链接。现在,它可以在几秒钟内在远程计算机上重建照片作品。接下来,您通过以下方式完成:
$ mv Photos Photos-OLD
$ mv Photos-work Photos
您可以在本地和远程计算机上执行此操作。您可以将OLD目录保留很长时间,它使用的空间通常可以忽略不计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句