从损坏的档案中恢复文件

从损坏的档案中恢复文件

我有一个 40Gb 的 tar 文件,但当我使用 Ubuntu 上的存档管理器打开它时,只有 512MB。我的大部分文件都乱七八糟。即使我这样做:

tar -tf myfile.tar.gz

我没有得到所有文件的列表。创建文件时,我使用了以下命令:

tar -zcvf myfile.tar.gz myhomefolder

然后我停止了命令,因为我不想压缩(它花费太长时间)并运行:

tar cvf myfile.tar.gz myhomefolder

在 Windows 上使用 7-Zip 时出现此错误:

There are data after the end of file

问题是文件中有一个坏结尾。如何删除该结尾。哪些软件可以以二进制模式打开文件或类似的东西。

我如何获取我的文件?

答案1

您可以尝试该实用程序恢复然后使用以下方法提取恢复的档案太平洋保险协会

它过去曾帮助恢复损坏的档案,但您的情况可能有所不同。我遇到了一个问题,它无法为我恢复档案,所以公平警告。


编辑:由于一名版主用刀子猛烈威胁我,我将添加一些我之前如何恢复档案的细节。(我开玩笑的。别伤害我,@Scott!)

您可以使用以下方式安装这两个软件包

sudo apt-get install cpio gzrt

确保两个包都已安装后,我们就开始工作吧。

首先,将存档放在您不介意数据被提取的地方。从那里,您可以运行

gzrecover broken-archive.tar.gz

gzrecover 可能需要一些时间,具体取决于存档的大小。不过,如果幸运的话,操作完成后,您会在同一目录中看到“broken-archive.tar.recovered”。

恢复的档案可能也遭受了某种损坏;这时 cpio 就派上用场了。它应该已经安装在您的系统上。

要提取恢复的档案,请使用

cpio -F broken-archive.tar.recovered -i -v

请注意,cpio 在此期间会输出大量信息。我建议您在完全独立的 tty 上执行此操作,而不是在 X 会话的终端上执行此操作。为此,您只需按 CTRL+ALT+F1,屏幕就会切换到终端。要返回 X 会话,请按 CTRL+ALT+F8(可能有所不同,但通常是 F7-9)。

提取已恢复档案的过程也将相当繁琐。由于 cpio 未针对多核使用进行优化,因此它将只使用一个核。无论它碰巧使用哪个核,它都可能将该核固定在 100% 使用率。如果您有一台双核机器,您可能不得不暂时不使用您的计算机。

请注意,这个过程实际上可能需要几天时间,尤其是考虑到档案的大小。要么找一台不同的机器来分担这项工作(较慢的 CPU 会使这个过程花费更长时间),要么计划暂时不使用您的计算机,要么做好在工作期间系统堵塞的准备。此外,如果您在 X 会话的终端内运行此命令,您可能会将第二个核心固定为 100%。如果您是高级用户,您可以使用该taskset命令将进程分配给特定核心。但是,这超出了我的回答范围。

祝你好运。

答案2

首先tar cvf myfile.tar.gz myhomefolder应该是tar cvf myfile.tar myhomefolder

其次你可以尝试tar xvf myfile.tar.gz

相关内容