如何恢复损坏的“tar.gz”文件

如何恢复损坏的“tar.gz”文件

我突然需要恢复一个旧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

您应该尝试以下操作:

  1. file对存档使用命令来查看它是否被识别为gzip-ped 数据。
  2. strace gunzip在文件上运行。这将打印从文件中读取的最后一个字节,这可能会帮助您识别文件中发生损坏的点。
  3. 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

相关内容