我想检查用 dd 复制到 Windows 共享上的 Ubuntu 磁盘备份的完整性。没有足够的空间来解压备份。是否有一个实用程序可以在不完全解压缩的情况下计算压缩文件的 md5?
问问题
6944 次
3 回答
15
这:
gzip -d -c myfile.gz | md5sum
会将解压缩的内容流式传输到 md5sum 中,而不是将整个内容加载到内存中。
如果是 zip 文件,则命令为unzip -p myfile.zip | md5sum
于 2009-06-28T10:21:22.083 回答
2
使用gzip
/zcat
和管道连接到 md5sum 的简单答案(在我写这篇文章时有人已经发布过)会起作用,但如果你想玩得更开心,这里有一个简短的 Perl 脚本,它可以做同样的事情。
#!/usr/bin/perl
use strict;
use warnings;
use Archive::Zip qw/:ERROR_CODES :CONSTANTS/;
use Digest::MD5;
die "Usage: $0 zipfile filename" unless @ARGV == 2;
my $zipfile = $ARGV[0];
my $filename = $ARGV[1];
my $z = Archive::Zip->new();
die "Error reading $zipfile" unless $z->read($zipfile) == AZ_OK;
my $member = $z->memberNamed($filename);
die "Could not find $filename in $zipfile" unless $member;
$member->desiredCompressionMethod(COMPRESSION_STORED);
$member->rewindData();
my $md5 = Digest::MD5->new;
while(1) {
my($buf,$status) = $member->readChunk();
$md5->add($$buf) if $status == AZ_STREAM_END || $status == AZ_OK;
last if $status == AZ_STREAM_END;
die "IO Error" if $status != AZ_OK;
}
my $digest = $md5->hexdigest;
print "$digest $zipfile/$filename\n";
于 2009-06-28T11:21:10.823 回答
0
这很复杂吗?我的方法是,只需使用
md5sum file.gz
并用我拥有的那个来验证 md5 总和,我认为这不需要解压。纠正我,如果我错了。
于 2020-08-01T12:31:06.243 回答