将本地文件与远程文件进行比较

时间:2010-08-06 11:58:02

标签: python comparison md5

我遇到以下问题:我在服务器上有一个本地.zip文件和一个.zip文件。我需要检查服务器上的.zip文件是否与本地文件不同;如果他们不是我需要从服务器拉新的。我的问题是如何在不从服务器下载文件并在本地比较文件的情况下比较它们?

我可以在创建.zip文件时为服务器上的zip文件创建MD5哈希值,然后将其与我本地.zip文件的MD5进行比较,但是有更简单的方法吗? / p>

3 个答案:

答案 0 :(得分:2)

简短的回答:你不能。

答案很长:要与服务器上的zip文件进行比较,有人必须阅读该文件。您可以在本地执行此操作,这可能涉及拉动它,或者您可以要求服务器为您执行此操作。你可以在服务器上运行代码吗?

修改

如果你可以在服务器上运行Python,为什么不散列文件并比较哈希?

import hashlib
with open( <path-to-file>, "rb" ) as theFile:
    m = hashlib.md5( )
    for line in theFile:
        m.update( line )
with open( <path-to-hashfile>, "wb" ) as theFile:
    theFile.write( m.digest( ) )

然后将hashfile的内容与本地生成的哈希进行比较?

另一个编辑

你问了一个更简单的方法。暂时考虑一下这个问题:

  • 您不想下载整个zip文件。
  • 因此,您无法在本地处理整个文件(因为这将涉及从服务器读取所有文件,这相当于下载它!)。
  • 因此,您需要在服务器上进行一些处理。具体来说,您希望提供一些“编码”文件的少量数据,这样您就可以获取少量数据而无需获取整个文件。
  • 但这是一个哈希!

因此,您需要进行某种散列。鉴于此,我认为上述内容非常简单。

答案 1 :(得分:0)

我想知道你打算如何在本地比较它们,如果是这样的话。您可以应用相同的逻辑来远程比较它们。

答案 2 :(得分:0)

您可以使用ssh登录并远程为该文件创建md5哈希,并为当前本地文件创建md5哈希。如果md5匹配,则文件是相同的,否则它们是不同的。