我有一个 .tar.gz 档案,它肯定遭受了某种损坏。档案中的数据对我来说显然非常珍贵,我真的很想尽可能多地获取它们。显然,我并不指望能得到所有数据,但尽可能多地获取数据会有所帮助。
此档案是通过 FTP 发送给我的,但发送档案的人也损坏了它。它不应该在 FTP 传输过程中损坏。我无法获得它的另一份副本。
显然,我已经尝试过解决这个问题。我使用了一个名为恢复然后尝试提取原始档案,以提取 gzrecover 生成的“已恢复”档案。但是,这并没有给我带来多大帮助。我能够从中获取一些文件,但不是全部。我在 Ark(KDE 的档案管理器)中查看了档案,它能够生成档案内容的完整列表(即档案中的所有文件和文件夹),因此我有点希望档案仍然有某种恢复的机会。
原始档案大小约为 18GB。“恢复”的档案大小约为 30GB。
我还使用 GNU cpio 从恢复的存档中提取文件。它首先成功提取了存档中的部分内容(大约两分钟),然后开始发送垃圾邮件
cpio: Malformed number ��������
运行了好几天后(并且长时间向我的终端发送垃圾邮件),我终于收到了消息
cpio: premature end of file
此外,在发送“格式错误的号码”垃圾邮件期间,我并没有发现提取到的文件夹文件大小有任何增加。换句话说,除此之外,没有恢复任何数据。
我使用了以下两个 cpio 命令来提取档案:
cpio -ivd -H tar < archive.tar.recovered
cpio -F archive.tar.recovered -i -v
不用说,我曾多次尝试使用 gzrecover 恢复此档案,并使用这两个 cpio 命令提取每个档案。
我问这个问题是因为我真的非常想恢复这些数据。我还能使用什么其他方法?我如何从这个档案中恢复数据?这个档案中的数据对我来说意义重大,如果丢失了它会让我心烦意乱。我几乎愿意做任何事情来恢复它。
谢谢。
答案1
“gz”文件是单个文件的压缩存档。“tar”文件是打包成单个文件的文件集合。根据您的描述,您可能能够提取部分 tar 文件,但只能提取到第一个错误为止。您最终会得到一个部分 tar 文件。然后可以提取 tar 内容,但由于您只有第一部分,因此您只能提取放在那里的任何文件。
本页更详细地描述了所有这些内容以及您可以采取的措施。重点是:gunzip < damaged.tar.gz | tar xvf -