比较本地文件与远程文件

2 投票
3 回答
4613 浏览
提问于 2025-04-16 02:25

我遇到了一个问题:我有一个本地的 .zip 文件,还有一个在服务器上的 .zip 文件。我需要检查一下服务器上的 .zip 文件和本地的是否不同;如果它们是一样的,我就需要从服务器上下载一个新的。我的问题是,怎么能在不下载服务器上的文件的情况下进行比较呢?

我可以在创建服务器上的 .zip 文件时生成一个 MD5 哈希值,然后和我本地的 .zip 文件的 MD5 值进行比较,但有没有更简单的方法呢?

3 个回答

0

你可以通过ssh登录到远程服务器,然后为那个文件生成一个md5哈希值。同时,你也可以为你本地的文件生成一个md5哈希值。如果这两个md5哈希值一样,那说明这两个文件是完全相同的;如果不一样,那说明它们是不同的。

0

我想知道如果要在本地比较它们,你打算怎么做。如果是这样的话,你也可以用同样的方法来进行远程比较。

2

简短的回答:你不能。

详细的回答:要和服务器上的压缩文件进行比较,必须有人去读取那个文件。你可以选择在本地读取,这就需要把文件下载下来,或者你可以请求服务器帮你读取。你能在服务器上运行代码吗?

编辑

如果你能在服务器上运行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的内容和本地生成的哈希值进行比较?

另一个编辑

你想要一个更简单的方法。先从抽象的角度想一想:

  • 你不想下载整个压缩文件。
  • 因此,你不能在本地处理整个文件(因为这意味着要从服务器读取所有内容,相当于下载整个文件!)。
  • 所以,你需要在服务器上进行一些处理。具体来说,你想得到一些小的数据,这些数据能够“编码”这个文件,这样你就可以只获取这小部分数据,而不需要下载整个文件。
  • 但这就是哈希值的作用!

因此,你需要进行某种哈希处理。考虑到这一点,我觉得上面的内容其实挺简单的。

撰写回答