两台不同计算机上的文件差异

时间:2017-02-18 08:23:49

标签: file networking filesystems communication

有两台计算机具有相同数量的文件。我们如何确定One计算机中的任何一个文件是否有轻微变化。这些计算机之间的网络通信速度非常慢

3 个答案:

答案 0 :(得分:2)

您可以使用md5sum实用程序。对于Windows,请检查[this](https://support.microsoft.com/en-us/help/889768/how-to-compute-the-md5-or-sha-1-cryptographic-hash-values-for-a-file)和linux使用1 2 3 4 5 6 7 8 9 10 x xx xx xx xxx xxx xxx xxx xxx xxxx x xx xx xxx xxx xxx xxx xxxx x xx xxx xx 1 out: x input: 2 out: xx input: 3 xx x input: 4 out: xx xx input: 5 out: xxx xx ,然后比较哈希值。

答案 1 :(得分:0)

您可以散列文件并通过网络比较哈希​​值。

设计了一个好的哈希函数,如果函数的输入只有一点差别,那么输出将完全不同。此外,现在大多数散列函数的输出长度为160-512位。意思是虽然你可能想要比较几个千兆字节大的文件,你只需要通过网络发送一个512位的小字符串来查看哈希值是否匹配。

如果您有数百万个文件,那么这可能已经很多了。解决方案看起来像这样:

  1. 在每台计算机上散列每个文件
  2. 然后连接哈希并再次对连接的字符串进行哈希
  3. 现在比较这个输出,如果它不同,你知道这些文件存在差异。
  4. 要查找哪个文件不同(或者甚至在文件中的确切位置),您可以使用二进制搜索:
  5. 将数百万个文件分成两部分,现在转到步骤1-3(如果有足够的空间,可以保存每个文件的哈希以加快速度)。
  6. 现在两个不同的哈希值中的每一个都递归地转到步骤4-6。
  7. 如果您找到了不同的文件,您可以再次按行数拆分文件,并按照4-6的方式工作。
  8. 在某些时候,行数会很小,以至于散列可能比行的实际内容长。现在,以天真的方式比较实际内容当然更有效。
  9. 假设您只有一个不同的文件,那么只需要对数许多哈希值通过网络发送,从而最大限度地减少网络流量。

答案 2 :(得分:0)

一个想法是为每个文件生成一个哈希值。哈希将任意长度的文件转换为固定大小。你可以进一步散列哈希值,然后上传并比较。哈希是广泛用于确保下载不会损坏的东西。