当给定 -l 和 -v 选项时,gzip 将给出每个文件的校验和,如下所示:
$ echo foo > foo
$ gzip foo
$ gzip -lv foo.gz
method crc date time compressed uncompressed ratio uncompressed_name
defla 7e3265a8 Dec 10 17:37 28 4 150.0% foo
是否有任何外部工具可以用来导出相同的校验和?
md5sum
,cksum
并sum
填写类似的角色,但不给出匹配代码(3915528286的十六进制为e962385e)。
$ echo foo > foo
$ md5sum foo
d3b07384d113edec49eaa6238ad5ff00 foo
$ cksum foo
3915528286 4 foo
$ sum foo
00106 1
申请的额外细节:
我们有一个包含许多大文件的文件系统,并且不断地复制新文件。一些传入的文件匹配已经存在的文件,在这种情况下,我们想简单地硬链接预先存在的文件,以节省磁盘空间。对于解压后的文件,md5sum 帮助我们快速有效地进行比较。另一方面,gzip'd 文件对于相同的数据通常具有不同的 md5sum(由于时间戳或所有者,这与此应用程序无关)。我注意到 gzip 将为内部数据提供校验和,因此对于两个 gzip 文件,我可以简单地比较校验和列表以及大小。
我还想支持将 gzip 文件与“普通”文件进行比较,在这种情况下,我需要一个实用程序,它可以从 gzip 外部生成相同的校验和。我想简单的解决方案是在比较之前总是 gzip 纯文件,但这是我想避免的开销,因为我们的系统目前受到 CPU 时间的瓶颈。