【问题标题】:How can I recover files from a corrupted .tar.gz archive?如何从损坏的 .tar.gz 存档中恢复文件?
【发布时间】:2010-09-17 02:45:07
【问题描述】:

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

file SMS.tar.gz

给出回应

gzip compressed data - deflate method , max compression

当我尝试使用 gunzip 解压缩存档时,延迟后我收到了消息

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

有没有办法恢复部分存档?

【问题讨论】:

    标签: gzip archive corrupt recover


    【解决方案1】:

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

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

    【讨论】:

    • gzrecover 未安装在 Mac OS 上。然而,Liudvikas Bukys 的方法效果很好。 tcpdump 通过管道传输到 gzip,被 Control-C 杀死,意外的 EOF 试图解压缩 pipee 文件。
    • gzip 恢复工具包非常棒。谢谢!
    【解决方案2】:

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

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

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

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

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

    成功了! 这是一种渺茫的可能性,也许值得一试 - 它可能会帮助那里的人。

    【讨论】:

      【解决方案3】:

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

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

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

      尽管最后出现错误,但仍会给出一些输出。

      如果压缩后的文件有较大的缺失块,那么在坏块之后基本无望。

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2017-12-03
      • 2015-03-04
      • 2013-07-18
      • 2018-08-24
      • 2012-10-14
      相关资源
      最近更新 更多