我突然需要恢复一个旧tar.gz
文件,但是一旦执行:
tar -zxvf filename.tar.gz
我明白了:
gzip: stdin: invalid compressed data--format violated
tar: Child returned status 1
tar: Error is not recoverable: exiting now
答案1
您应该尝试以下操作:
file
对存档使用命令来查看它是否被识别为gzip
-ped 数据。strace gunzip
在文件上运行。这将打印从文件中读取的最后一个字节,这可能会帮助您识别文件中发生损坏的点。gunzip
运行under的调试版本gdb
。尝试更正损坏的部分(您必须非常幸运才能做到这一点)并查看它是否可以继续到文件末尾。
根据损坏的性质,您可能无法恢复数据。
答案2
完全恢复是不可能的。 .zip 等格式提供了更好的保护和恢复选项,但也不完整。
.tar.gz将所有文件集中在一起,然后应用压缩。。压缩重新启动每个文件的压缩。因此,在 .zip 文件中,对压缩块造成的损坏只会影响该块所属的文件。在 .tar.gz 中,损坏将影响所有后续文件,直到以某种方式重新启动压缩为止。
答案3
有关恢复工作原理的一些信息可以在以下位置找到:恢复损坏的 .gz 文件。
还有一个工具可以帮助您执行此操作:gzip 恢复工具包又名 gzrecover。
答案4
使用这个:https://github.com/arenn/gzrt
gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v