像一个消息摘要而是逐步描述文件

问题描述:

我有一组与需要转移周围使用Java程序我写文件和更新异构操作系统地理位置较远的节点。目前我需要再次发送整个文件,如果文件更改。有没有办法确定文件的不同部分,只发送这些文件(请注意,这些文件不一定是文本,它们可以是任何格式)。我能想到的唯一方法是将文件拆分成块,散列块并将散列发送回请求器,然后请求器只请求它需要的块,但对于小块和大文件,这是一个很大的开销,所以有什么发送一些描述我的文件的消息的方式,以便可以分析单个消息以提供需要发送的块的列表?像一个消息摘要而是逐步描述文件

大部分消化功能被设计成一个小的变化,以在整个哈希输出的大变化的数据结果,基本上,我需要的这种反向,将在所有操作系统上运行。

如果我正确理解你的问题,你需要保持文件同步在两个系统上。有一种名为rsync的工具,它可以通过只发送对文件所做的更改来同步两个文件(或整个目录)。

您还可能有兴趣在Rsync algorithm

+0

rsync是首先想到的。甚至还有Java包装(尽管我不会推荐任何现有的包装)。 – Perception 2012-02-17 15:58:23

+0

绝对完美,我无法完全使用现有的库,因为它需要使用我的自定义通信协议。这个算法看起来像我需要优化我的系统。 – feldoh 2012-02-17 20:46:11