28

我在 .tar.gz 存档中有大量文件。使用命令检查文件类型

file SMS.tar.gz

给出回应

gzip compressed data - deflate method , max compression

当我尝试使用 gunzip 提取存档时,延迟后我收到了消息

gunzip: SMS.tar.gz: unexpected end of file

有什么方法可以恢复部分存档吗?

4

3 回答 3

37

恢复是可能的,但这取决于导致损坏的原因。

如果文件只是被截断,得到一些部分结果并不难;赶紧跑

gunzip < SMS.tar.gz > SMS.tar.partial

尽管最后出现错误,这将给出一些输出。

如果压缩后的文件有较大的缺失块,那么在坏块之后基本上是没救了。

如果压缩文件被系统性地损坏(例如以 ASCII 模式传输二进制文件,这会破坏整个文件的回车符和换行符),则可以恢复,但需要相当多的自定义编程,这真的很值得如果您绝对没有其他资源(没有备份)并且数据值得付出很多努力。(我已经成功完成了。)我在上一个问题中提到了这种情况。

.zip 文件的答案有些不同,因为 zip 档案有多个单独压缩的成员,所以希望更大(尽管大多数商业工具相当虚假,它们通过修补 CRC 来消除警告,而不是通过恢复良好数据)。但是您的问题是关于 .tar.gz 文件,这是一个包含一个大成员的档案。

于 2008-10-21T18:29:48.737 回答
18

你确定它是一个gzip文件吗?我将首先运行“文件 SMS.tar.gz”来验证这一点。

然后我会阅读The gzip Recovery Toolkit页面。

于 2008-10-14T14:32:54.490 回答
4

这是我们遇到的一种可能的情况。我们有一个无法解压缩的 tar.gz 文件,尝试解压缩时出现错误:

gzip -d A.tar.gz
gzip: A.tar.gz: invalid compressed data--format violated

我发现该文件最初可能是通过非二进制 ftp 连接上传的(我们不确定)。

使用 unixdos2unix实用程序的解决方案相对简单

dos2unix A.tar.gz
dos2unix: converting file A.tar.gz to UNIX format ...
tar -xvf A.tar
file1.txt
file2.txt 
....etc.

有效!这是一种渺茫的可能性,也许值得一试——它可能会帮助那里的人。

于 2013-09-20T11:07:51.463 回答