如果您关心文件名(或有碎片文件)

如果您关心文件名(或有碎片文件)

这个事件其实已经发生在几年前了,但我手里还保留着那张没变过的U盘。我可能不走运,但我想我应该向这里所有聪明人征求建议。

短篇故事:

几年前,我的妻子想将 iPhone 上的所有照片存储到 USB 闪存驱动器上,因为她的存储空间不足。我们从商店买了一个全新的 USB 闪存驱动器,所以我认为它有一个FAT32文件系统。我们将闪存驱动器插入Mac OS X并能够备份她的所有照片。备份完成后我们意识到几乎每张照片都有一个重复的文件。photo.jpg有一个名为 的重复文件photo\ 1.jpg。所有重复文件均以该\ 1.jpg后缀结尾。

刚启动 UNIX,我知道我可以使用 shell 的简单正则表达式来删除所有重复文件,但我最终没有将命令放在引号中...并且我最终执行了以下命令:rm * 1.jpg。正如您所看到的,我告诉系统删除​​每个文件,然后删除1.jpg.而不是告诉系统删除​​所有以1.jpg.发生这种情况后,我旁边愤怒的妻子(当时的女朋友),我拔掉了闪存驱动器并将其存放在抽屉里。

问题:

rm是否有任何安全的 UNIX 工具可以从 USB 闪存驱动器中恢复使用 删除的数据?还是我运气不好?正如我上面所说,自从事件发生以来我就没有碰过闪存驱动器。

如果这个问题太宽泛,请随意将其移至元或最适合的地方。

答案1

rm是否有任何安全的 UNIX 工具可以从 USB 闪存驱动器中恢复使用 删除的数据?

是的,顺便说一句,照片恢复是最常见的场景之一。

你所描述的条件实际上是最佳的因为:

  • 你直接删除了文件
  • 文件系统没有损坏
  • 您不再使用该驱动器

这些条件导致了两种可用的选择。

如果您关心文件名(或有碎片文件)

当您在驱动器上顺序写入大量图片时,碎片的风险实际上非常低,但仍然如此。恢复文件和文件名您需要一个支持文件系统的工具。

进入测试盘:

sudo testdisk /dev/sdb

它将通过 TUI(文本用户界面)向您展示分步过程。基本步骤是:

  • 扫描驱动器
  • 选择分区
  • P显示文件
  • 复制已删除的(红色)文件C

如果您实际上只是想要回照片

对于图片,你不妨不关心名字。此外,文件系统可能已损坏(不是您的情况),而 TestDisk 也无济于事。

摄影记录(来自同一开发人员)来救援:

sudo photorec /dev/sdb

这里只需要指定输出目录即可。您还可以禁用对某些您不关心的文件类型的检测。

答案2

是的,有一些工具可以恢复某些已删除的文件。使用它们的最安全方法是尽早卸载有问题的文件系统(您已经这样做了),然后将该文件系统备份到映像文件并使用该映像文件进行任何救援尝试。这更安全,因为您有针对故障硬件或有缺陷的救援程序的备份。此外,这还可以加快救援速度,特别是在多次扫描文件系统的情况下。

实际救援可以尝试开源工具testdisk,photorec,recoverjpegrecovermov。最后三个实现了类似的方法,即它们扫描众所周知的文件签名。因此,即使相关文件系统结构严重损坏或已被覆盖,它们也能够恢复文件。限制是当文件被文件系统分段时。尽管有这个名字,但photorec它能够识别许多非照片文件签名。

另一方面,Testdisk 尝试恢复旧的分区和文件系统表,因此甚至可能恢复原始文件名和碎片文件。

Testdisk 和 photorec 是同一作者,因此它们通常打包在一起。

例子:

ddrescue --idirect /dev/sdX usb.img usb.map
mkdir out
testdisk usb.img
photorec usb.img
mkdir recjpg
cd recjpg
recoverjpeg ../usb.img
cd ..
mkdir recmov
recovermov ../usb.img

相关内容