如何验证远程文件传输的完整性

如何验证远程文件传输的完整性

有什么方法可以验证远程传输文件的完整性?我目前正在使用 wget 将大量文件和文件夹从 ftp 服务器传输到另一个远程服务器,但我无法知道这些文件是否已损坏。有什么方法可以通过获取远程文件的 MD5 哈希值之类的信息来验证传输的完整性?还有其他文件传输协议支持此功能吗?

答案1

rsync几乎总是文件传输的最佳解决方案。它最出名的是其差异优化传输(当您已经有类似的文件或目录时非常有用),但它会对传输的每个步骤进行大量校验。

答案2

根据你使用的工具,可以自动哈希并验证下载的文件,唯一能做到这一点的工具是全部击倒!Firefox 的插件。

我通常在这种情况下使用由创建的哈希清单文件md5deep在 Windows 上,如果您使用 Linux/UNIX,则可以使用 md5sum;如果您使用 OS X,则可以使用 md5。使用 md5deep I CD 到包含要传输的文件的文件夹并运行以下命令:

md5deep -l -r *>manifest.md5

在传输文件和清单后,您可以在远程端运行以下命令:

md5deep -l -r -x manifest.md5 *

它将显示与清单中的哈希值不匹配的每个文件的列表。

答案3

虽然我真的很喜欢 md5deep 和 rsync 的答案(并且都投了赞成票),但听起来你在源服务器上面对的是一群非常难缠的人。一个非常丑陋但总比没有强的替代方案是剔除传输日志中的文件大小,然后在本地进行比较。

wget -nv -o log.txt ftp://ftp.myserver.com/welcome.msg

...创建了一个如下所示的日志文件行:

2010-01-01 09:47:17 URL: ftp://ftp.myserver.com/welcome.msg [470] -> "welcome.msg" [1]

因此,通过使用一些脚本和一些 awk 之类的东西,您可以提取文件名和文件大小,然后至少比较它们是否匹配。我重申,这并不好,应该是您的最后解决方案...但它有效。

答案4

这是一个不太可能的事情,但如果服务器支持php,您可以利用这一点。

将以下内容保存为php文件(例如check.php),放在与您的文件相同的文件夹中name_of_file.txt

<? php
echo md5_file('name_of_file.txt');
php>

然后,访问该页面check.php,您应该会得到文件的 md5 哈希值。

相关问题:

相关内容