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


11

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

8
那真的是一个压缩的tarball吗?首先尝试file命令。
Alex

1
是的,我遇到了不止一次的问题,我得到的.tar.gz确实是.tar,甚至是PDF。
vonbrand 2014年

Answers:


12

您应该尝试以下操作:

  1. file在档案上使用命令查看是否被识别为gzip-ped数据。
  2. strace gunzip在文件上运行。这将打印从文件读取的最后字节,这可能有助于您识别文件中发生损坏的点。
  3. 运行gunzipunder 的调试版本gdb。尝试更正损坏的部分(您必须非常幸运地能够执行此操作),然后查看它是否可以继续到文件末尾。

根据损坏的性质,您可能无法恢复数据。


gunzip filename.tar.gz为我工作。
拉维·多里亚


2

无法完全恢复。.zip之类的格式提供了更好的保护和恢复选项,但也不完整。

.tar.gz将所有文件集中在一起,然后进行压缩。.zip重新启动每个文件的压缩。因此,在.zip文件中,对压缩块造成的损坏仅影响该块所属的文件。在.tar.gz中,损坏将影响所有后续文件,直到以某种方式重新开始压缩为止。


我在想,很好的解释!我想知道是否还有其他格式与zip一样好(但压缩效果更好),但是zip总是在任何地方都可以识别,并且可能是恢复的最佳选择。
Aquarius Power

1

运行zcat bad.tar.gz > some.tar,然后解压缩。越过文件的损坏部分非常棘手。手册页提供了该格式的指针,但是我会在Google中寻找其他选项。

您确定这是用gzip压缩的吗?可能会抱怨,因为它不了解格式...


1

所有摘要仅适用于从文件开头到发生错误或剪切文件的位置提取信息。

不幸的是,没有人描述如何在损坏区域后恢复部分文件/流。有人收到吗?


-1

使用这个:https : //github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v

您的命令导致cpio: illegal option -- F错误消息。
schily

1
cpio --help为您提供选项:-F,--file = [[USER @] HOST:] FILE-NAME使用此FILE-NAME代替标准输入或输出。可选的USER和HOST在远程归档的情况下指定用户名和主机名
W4U

你不是说abpout cpio,而是与供应商特定选项的克隆,例如参见schillix.sourceforge.net/man/man1/cpio.1.html如果ypou但是谈论的克隆,而不是原来的,你必须提到这您克隆正在使用。
schily's

1
@schilly,我正在谈论 cpiodebian中的include。GNU cpio:链接
W4U
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.