有什么办法可以validation远程传输文件的完整性吗? 我目前正在使用wget将大量文件和文件夹从ftp服务器传输到另一个远程服务器,但是我无法知道文件是否损坏。 有没有什么办法可以validation传输的完整性,通过获得像远程文件的MD5散列? 有没有其他的文件传输协议支持这个?
根据您使用的工具,可以自动散列和validation下载的文件,唯一可以做到这一点的工具,即使是DownThemAll也能立刻想到! Firefox的插件。
我通常用于这种情况的情况是由Windows上的md5deep创build的散列清单文件,如果您在OS X上使用Linux / UNIX或md5,则可以使用md5sum。使用md5deep I CD到包含要传输的文件的文件夹,然后运行命令:
md5deep -l -r *>manifest.md5
在传输文件和清单之后的远程端,您将运行以下命令:
md5deep -l -r -x manifest.md5 *
它将显示每个与清单中的散列值不匹配的文件的列表。
rsync几乎总是文件传输的最佳答案。 它以差分优化传输而闻名(当你已经拥有一个类似的文件或目录时,它是非常棒的),但是它在传输的每一步都会进行大量的校验。
虽然我真的很喜欢md5deep和rsync的答案(和upvoted两个),这听起来像你在源服务器面对一个非常困难的一群人。 一个真正丑陋但比没有更好的select是剔除文件大小的传输日志,然后在本地进行比较。
wget -nv -o log.txt ftp://ftp.myserver.com/welcome.msg
…创build了一个如下所示的日志文件行:
2010-01-01 09:47:17 URL: ftp://ftp.myserver.com/welcome.msg [470] -> "welcome.msg" [1]
所以通过使用一些awk或者什么的脚本,你可以提取文件名和文件大小,然后至less比较它们是否匹配。 我重申,这不是很好,应该是你最后的解决scheme…但它的工作原理。