我找到了问题 How to determine if data is valid tar file without a file? ,但我想知道:是否有现成的命令行解决方案?
发布于 2010-01-05 03:51:14
您可以使用gzip -t选项来测试文件的完整性
http://linux.about.com/od/commands/l/blcmdl1_gzip.htm
要测试gzip文件是否损坏,请执行以下操作:
gunzip -t file.tar.gz
要测试其中的tar文件是否损坏:
gunzip -c file.tar.gz | tar -t > /dev/null
作为备份的一部分,您可能只需运行后一个命令并检查$的值?然后返回0(成功)值。如果tar或gzip有问题,$?将具有非零值。
发布于 2012-01-18 03:41:01
如果您想对tar文件进行真正的测试解压而不将其解压到磁盘,请使用-O选项。这会将解压缩结果输出到标准输出,而不是文件系统。如果tar文件已损坏,进程将中止并返回错误。
焦油球测试失败的例子...
$ echo "this will not pass the test" > hello.tgz
$ tar -xvzf hello.tgz -O > /dev/null
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
$ rm hello.*
工作示例...
$ ls hello*
ls: hello*: No such file or directory
$ echo "hello1" > hello1.txt
$ echo "hello2" > hello2.txt
$ tar -cvzf hello.tgz hello[12].txt
hello1.txt
hello2.txt
$ rm hello[12].txt
$ ls hello*
hello.tgz
$ tar -xvzf hello.tgz -O
hello1.txt
hello1
hello2.txt
hello2
$ ls hello*
hello.tgz