首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不解压的情况下检查Unix .tar.gz文件是否为有效文件?

如何在不解压的情况下检查Unix .tar.gz文件是否为有效文件?
EN

Stack Overflow用户
提问于 2010-01-05 03:46:32
回答 5查看 210.6K关注 0票数 126

我找到了问题How to determine if data is valid tar file without a file?,但我想知道:是否有现成的命令行解决方案?

EN

回答 5

Stack Overflow用户

发布于 2010-01-05 03:51:14

您可以使用gzip -t选项来测试文件的完整性

http://linux.about.com/od/commands/l/blcmdl1_gzip.htm

来自:http://unix.ittoolbox.com/groups/technical-functional/shellscript-l/how-to-test-file-integrity-of-targz-1138880

要测试gzip文件是否损坏,请执行以下操作:

代码语言:javascript
复制
gunzip -t file.tar.gz

要测试其中的tar文件是否损坏:

代码语言:javascript
复制
gunzip -c file.tar.gz | tar -t > /dev/null

作为备份的一部分,您可能只需运行后一个命令并检查$的值?然后返回0(成功)值。如果tar或gzip有问题,$?将具有非零值。

票数 109
EN

Stack Overflow用户

发布于 2012-01-18 03:41:01

如果您想对tar文件进行真正的测试解压而不将其解压到磁盘,请使用-O选项。这会将解压缩结果输出到标准输出,而不是文件系统。如果tar文件已损坏,进程将中止并返回错误。

焦油球测试失败的例子...

代码语言:javascript
复制
$ 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.*

工作示例...

代码语言:javascript
复制
$ 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
$ tar -xvzf hello.tgz
hello1.txt
hello2.txt
$ ls hello*
hello1.txt  hello2.txt  hello.tgz
$ rm hello*
票数 36
EN

Stack Overflow用户

发布于 2012-12-09 21:09:19

您还可以使用pigz (并行gzip)检查*.tag.gz文件的内容,以加速存档检查:

代码语言:javascript
复制
pigz -cvdp number_of_threads /[...]path[...]/archive_name.tar.gz | tar -tv > /dev/null
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2001709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档