我恢复了几 TB 的数据,恢复了超过一百万个文件。恢复的大部分都是垃圾,但一小部分是非常有价值的文件,它们被埋在了混乱之中。 问:如何将恢复结果筛选为可管理的“信噪比”以便于评估单个文件?
背景
我使用 Foremost、Testdisk、dd 和 Photorec 来恢复数据。Foremost 等工具按文件类型提取备份数据。最终得到的是按类型排序的子目录中的数百万个文件。例如,我打开一个目录,面对的是 250,000 个 JPEG。
更复杂的是,这些程序会出错。例如,我将其设置为通过查找代码片段、、和来识别 CSS 文件,#* {
但对于如此简单的过滤器,不可避免地会出现一些误报。 .* {
#*{
.*{
逻辑(系统)方法是按文件类型查看。例如,我必须评估每个被标识为“css”的文件,看看它是否是 CSS;99.9% 的文件都不是。
我正在尝试通过剔除那些可以被识别为可删除(即无价值、损坏、不可用/不可恢复)的文件来使这项任务更易于管理,最好是通过自动化方式或至少是批量方式。
文件特征
以下是文件数量的估计:
type, sizeG, approx % corrupt, approx % I may end up needing
jpg 10G ~25% corrupt ~0.0025% keep
js 13G ~0% corrupt ~0.025% keep
less 1G ~0% corrupt ~0.001% keep
mov 21G ~0% corrupt ~50% keep
mp3 13G ~50% corrupt ~2% keep
mp4 1.5G ~50% corrupt ~25% keep
pdf 11G ~20% corrupt ~0.125 keep
(The PDF files are picture albums; each one is a collection of dozens of
important pics. Examining them is hard and time-consuming to do manually.)
wma 2.7G ~90% corrupt ~0.01% keep
zip 2G
以下是我现在使用的一些程序
JPG
使用 Windows,我可以打开文件夹,查看缩略图,不可见的文件将无法加载。1 我可以按住 Shift 键并单击它们并删除。不幸的是,这是一个包含 320,000 个文件的 35G 目录,.jpg
没有任何组织。__________ 1更准确的说法是,完整的文件和那些将显示可识别缩略图的文件之间存在高度相关性
。
使用 Windows,我右键单击大约 1,000 个文件,然后单击“打开”,等待 5 分钟,然后对第一个文件执行一些操作,将所有打开的文件合并为一个文件,这大约需要 10 分钟,然后批量关闭 1,000 个文件。然后打开那个超大文件并滚动,搜索真实图像。我一次突出显示约 100 个,然后将它们提取到新文件中进行存档,最后删除那个大文件。
mp3、mp4、wma
使用 Windows,我无法使用 Winamp,因为每次一个损坏的文件都会杀死 Winamp。所以我使用 VLC,将它们放在一个长的播放列表中,然后收听。坏文件会立即被跳过,但仍然需要很长时间。
压缩
使用 Windows,我想我已经解压了。我选择所有 zip 文件,右键单击,使用 WinRAR 解压,或将每个文件解压为单独的存档。但之后单击每个目录是一项艰巨的工作。
js、css、less
使用 Windows,这些文件很容易快速查看。我在 Explorer 中打开父目录,打开文件预览,选择第一个项目,然后使用键盘上的箭头、删除和输入键。但仍然有 20,000 个文件。
客观的
我想知道可以使用哪些比此更有效的方法来对数据恢复的后果进行排序/过滤,以便我可以加快这一进程。Linux 建议是非常欢迎。即使作为第一步,如果我能识别整个档案中的损坏文件并先删除这些文件,然后再删除 0 字节文件,也会有所帮助。
答案1
我不会重复 Scott 所讨论的内容,他关于恢复损坏文件(或部分文件)的讨论是一个值得探索的领域。我要补充一点:如果检查原始文件,某些文档格式看起来大部分都是垃圾。但是,文本内容通常是大块的、可识别的。即使文件已损坏或部分内容丢失,您也可能能够手动提取大部分文本。但正如 Scott 在评论中指出的那样,这是为了挽救您认为有价值的特定内容;它不会成为批量处理文件的自动化流程的一部分。
战略
这种范围的任务将需要很长时间,而且在完成之前您很可能就会精疲力竭。您希望自己的努力获得最大的价值。让我来推荐一种方法。不过,有一个警告。我不知道有任何现成的自动化解决方案。您可能能够使用脚本之类的东西来提供帮助,但这在很大程度上将是一个手动过程。关键是要使该过程尽可能高效。
确定优先顺序。 把时间花在最有可能获得最大收益的地方。这意味着要遵循良好的流程,而不是处理随机文件。这也意味着要决定不是对低潜力文件进行任何处理,至少直到处理完高潜力文件为止。
让你的时间变得有意义。 时间管理有一个古老的概念:如果你要处理某件事,那就用它做些什么。决定你是否可以快速完成它。如果可以,那就去做。如果不可以,就把它放在以后完成或丢弃。但不要把时间花在一个文件上,然后就把它扔回原处。
创建组织。 该过程的一部分是查看文件并将其放入特定目录中以供以后处理。不要害怕创建大量目录。使用它们来保留您了解的有关文件的信息、按潜力对文件进行分组等。寻找快速识别有关文件的可操作信息的方法,并将它们移动到目录中以汇总它们以供以后处理。这将创建要处理的文件池,并留下需要更多工作的文件。
使用该组织。 批量处理相似的文件,而不是处理不同需求的不同类型文件。重复和相似性将使您更有效率。
建议流程(分类)
考虑三个类别:简单、潜力大的文件;可丢弃的文件;需要更多工作的文件。按此顺序处理它们。当您到达第三类时,重复该过程。
识别所有可识别的、未损坏的文件,并将它们拉入工作池。按文件类型汇总它们。这些是首先要处理的文件。我会按大小对它们进行排序(请参阅下面的讨论)。从最大的文件开始,然后逐步向下。使用普通应用软件查看这些文件,看看它们是什么以及你想保留什么。或者,只需保存它们并继续下一步。
对于图像,使用类似伊凡维尤。它具有缩略图视图和批处理等功能,可以真正加快处理大量图像文件的速度。我会一次将几百个文件移动到一个目录中进行处理。
在剩余的文件中,剔除最小的文件(如下所述),以使集合更易于管理。
剩下的文件需要做更多的工作。寻找一些特征,这些特征将允许您识别另一组具有潜力的文件。我首先要考虑的一个特征是大小。最大的文件最有可能包含有用的内容,不太可能是文件恢复的残骸,也不太可能是通过损坏而创建的。这些文件的数量也可能是可控的。从它们开始,然后按大小依次处理剩余的文件池。
使用文件大小 - 小文件
我遇到过类似的情况(但幸好没有像你这样处理过)。我发现快速取得进展的一个方法是文件大小。如果恢复的文件包含典型的混合内容,则大小分布将出现偏差,并且会有大量小文件,其中大部分都是可以丢弃的。
许多文件类型包含大量“开销”,例如标头信息。Word 文档(有时是 PDF)等文件也可能包含嵌入字体等内容。因此,即使一个字节的内容也要求文件具有一定的最小大小。您可以通过创建每种类型的一个字节文件来确定最小大小。
对于图像文件,请查看非常小的文件并查看它们包含的内容。使用文件管理器按大小排序,然后在大小增加时查看示例文件。您会发现最小尺寸的“好”图像包含您可能不需要保留的内容,例如来自网站的微小艺术片段。查看样本可以让您很好地了解感兴趣的最小尺寸图像。
对于文档,请考虑恢复的价值与时间。您可能保存了一些有价值的文本片段,例如想法或参考资料。如果是这样,这将没什么帮助。否则,您可能会发现保存的草稿的部分或非常短的文本片段。它们可能不再需要,或者如果您确实需要它们,重新创建它们可能比检查大量它们并清理它们以防万一要容易得多。因此,您可以定义最小感兴趣的大小。
完成针对某个文件类型的此练习后,按大小对目录进行排序,并选择小于最小值的所有内容。您可以在删除之前将它们移动/存档到备份。您可能希望在删除之前浏览这些内容(低优先级),或者如果您的文件选择意外混乱,可以再次尝试查看和恢复。
我经常发现,尤其是在 Windows 中,当文件数量超过一定阈值时,文件管理器就会出现问题。您可能会发现,一次处理合理数量的文件(不超过几百个)会更快、更可靠。
识别文件类型的思路
当您处理无法识别的文件类型时,您基本上需要手动操作。它们处于收益递减曲线的下方。但是,以下是一些识别无法识别的文件类型的方法:
许多文件类型都有标头信息。在文本编辑器中打开文件并查看内容的第一个“段落”。
如果您有一堆无法识别的巨型文件,那么文件大小可能就是线索。巨型文件可能是备份、档案、相册或视频。
按文件类型汇总可识别文件后,查看大小范围。这将成为汇总无法识别文件的有用线索。
答案2
找到零长度文件?这很容易。在 Windows 中,
size:0
在 Windows 资源管理器搜索框中输入(找到后,可以删除它们)。在 Linux 中,您可以执行find . -type f -size 0 -exec rm {} +
或者,如果你有 GNU
find
,你可以这样做find . -type f -empty -delete
我不确定我是否理解了您所说的一切,尤其是有关 zip 的内容,但检查和/或删除目录等简单、重复的操作通常很容易在 Windows 或 *nix 中编写脚本。
我真的不知道你使用的工具(Foremost、Testdisk 和 Photorec),但你说你得到的大部分文件都是垃圾。冒着大大增加你的工作量的风险,我将重复 Gene 的评论:你可能要考虑这种可能性:你得到的某些文件包含有价值的信息,但损坏程度很严重,标准工具无法处理它们,但结构足够好,其他数据修复工具可能能够修复它们。
- 例如,我曾经有一些图像文件被截断了。当然,没有办法恢复那些不存在的像素,但我发现我使用的标准图像查看器软件在文件末尾前几千个字节处停止了。我能够修复文件,以便显示所有存在的像素,从而导致大约十多条扫描线变得可见。那是很久以前在一个遥远的星系里发生的事情,所以我无法提供更多细节。
- 也许更好的例子是,如果文件缺少前 512 个字节,或者这些字节存在但已损坏,则标准文件查看/编辑工具可能会失败。但从此类损坏中恢复并重建丢失的数据可能是可能的。
只是一些值得思考的事情。
- 你可能想看看 自动扫描图形文件是否损坏。请务必检查链接和有关的右侧的标题。
答案3
需要注意的是,在使用“原始文件雕刻”方法(也称为“文件签名搜索”)恢复文件时,损坏文件的数量可能因扫描期间激活的文件类型而异。例如,Photorec 通常会截断(从而损坏)完全有效且连续的视频文件,而这些视频文件恰好在其流中有一个随机的假 JPG 签名。如果禁用 JPG 检测,则同一源驱动器上的同一文件将被完美提取。在这方面,检测算法似乎相当粗糙,我在专门的论坛上报告了这个问题几个月前。我还就恢复视频文件这一特定主题做了一个报告在视频相关的论坛上。至少 Photorec 是免费的,而且据我所知,昂贵的专业数据雕刻实用程序(如 Foremost)的表现也好不到哪里去。因此,为了获得任何给定文件类型的最佳恢复效果,最好禁用所有其他文件类型,至少是那些容易产生大量误报的文件类型(根据我的经验:JPG、MP3、MPG、ZIP、RAR、OGG;另一方面,WMV 或 MKV 文件具有非常独特且相当长的签名,因此出现误报的可能性非常低 - 但即使具有有效的标头,恢复的文件也可能被截断)。出于同样的原因,PDF 文件也可以通过与流中未压缩存储的图像文件相对应的“漏洞”来恢复。
一般而言,当无法通过文件系统分析进行恢复(如果文件系统严重损坏)或无法恢复感兴趣的特定文件(因为它们的元数据已被覆盖)时,原始文件雕刻应被视为最后的手段。如果文件在源分区上被分割成碎片,那么很难重新组合其分散的块,这些块可能相距数百 GB。更先进的实用程序被宣传为能够以更高的成功率重建碎片文件,但我没有使用过它们。
至于在大量的恢复文件中判断哪些文件有效、哪些无效,一种相对简单的方法是使用重复检测器,设置为只分析前几个字节,并以一堆已知有效的文件作为参考。例如,使用 DoubleKiller(这是我最喜欢的重复检测器,尽管它已经很久没有更新了,因为它简洁高效,可以精确定制——不过有一个很大的缺点:它不能识别 Unicode 字符)来检查 JPG 文件,我会将一堆已知良好的各种来源的 JPG 文件放在一个新文件夹中(或者选择一个已经有各种 JPG 文件的现有文件夹——10 到 20 个就足够了,不要把你所有的色情收藏都放进去),将该文件夹拖放到“最近”面板,然后将包含恢复的 JPG 文件的文件夹拖放到“库”面板(“库”中的文件只有与“最近”中的至少一个文件匹配才会报告);然后,将分析设置为“前 10 个字节”(这足以检查签名 - 可以是“ÿØÿà JFIF”或“ÿØÿáyœExif”和其他变体 - 并且不要太长以避免检查实际图像的二进制内容,这对于不同的文件总是不同的),没有大小/名称/日期限制。将被列为重复的文件应该是有效的 JPG 文件(至少它们应该有一个有效的 JPG 标头,但如果其他地方缺少大量内容,它们可能仍然已损坏或无法读取)。