远程文件复制实用工具(如rsync),但会考虑到已经复制的数据(在这个会话中)?

假设我有一个包含两个文件的目录,两个文件都是相同的,而且相当大(例如2GB)。我想将该目录rsync同步到远程主机。 据我了解(我可能是错的),rsync计算校验和的文件。 当然,如果它看到2个文件具有相同的校验和,它可以只复制第一个文件,然后在远程主机上做第二个文件的本地副本? 这会使它更快,不是吗?

在类似的说明,在复制之前不rsync散列所有的远程文件? 如果看到与要传输的文件具有相同散列的不同文件,则可以在远程主机上执行本地副本。

rsync支持这种事情吗? 有什么方法可以打开它吗? 有没有一种类似于rsync的工具,将做这种基于散列的本地副本?

在类似的说明,在复制之前不rsync散列所有的远程文件? 如果看到与要传输的文件具有相同散列的不同文件,则可以在远程主机上执行本地副本。

不,但是Unison呢 。

我不认为现在有任何产品可以作为一个单一的软件包来做到这一点。 有广域网优化器将为您做这个,然后你仍然运行RSYNC。

您正在寻找的是重复数据删除/重复数据删除过程。 理想情况下,你不会真的想要减less,但本地重复数据删除,然后做RSYNC。 这样,你只是复制链接,而不是在另一边扩大文件。

如果两个文件都完全相同,则必须rsync其中一个文件,然后在rsync进程之外的远程端分别创build一个本地副本。

如果你有两个相同的文件,那么rsync会尝试复制它们 – 文件名,而不是校验和,是最重要的标识符。 (我刚刚在笔记本电脑上testing过)

包装rsync来做一些你提到的东西是很有趣的。

这些值得一读:

http://en.wikipedia.org/wiki/Rsync

http://samba.anu.edu.au/rsync/tech_report/

git会做你所描述的

–fuzzy选项可能会做你正在寻找的东西:

从手册页:

– 呃, – 模糊
这个选项告诉rsync它应该为缺less的任何目标文件寻找基础文件。 当前algorithm在与目标文件相同的目录中查找具有相同大小和修改时间的文件,或类似命名的文件。 如果find,rsync使用模糊基础文件来尝试加快传输。

如果没有相关编程技巧的人能够调整选项的行为,就像你很容易描述的那样 – 尽pipe这可能不是你想参与的事情!

可能不是您想要的,但EMC avamar可以执行此操作…它会生成校验和列表并与本地进行比较,并仅传输尚未在本地备份中的文件(即使该文件来自其他计算机)。它在复制之前进行重复数据删除,在类似的机器上非常有用

但这只是备份,不是一个普通的副本…和avamar不便宜:)

我知道最接近avamar的开源替代品是backuppc …它仍然使用rsync,并且只对已经传输的文件执行重复数据删除