我女朋友有一个外部硬盘,里面有 10 年以上的照片、文档等。其中很多文件都来自她的旧 iPhone 5 和 MacBook。硬盘本身是NTFS格式。由于磁盘太旧了,它变成了数据丢失的危险(多么讽刺)。
当我们尝试将所有文件上传到 OneDrive 以便安全存储时,由于文件名无效,我们遇到了 1,000 个错误。我意识到许多文件以._
例如开头./pic/92 win new/iphone/._IMG_1604.JPG
。我不明白 macOS 以及为什么文件应该这样命名,但可以肯定的是,您永远无法将它们放入 OneDrive 中。
所以我决定将它连接到我的 Raspberry Pi 并从命令行重命名所有包含错误字符的文件。列出近 10,000 个文件后,我对整个硬盘运行了以下命令。
find . -name "._*" | sed -e "p;s/\._//" | xargs -d '\n' -n2 mv
此外,我使用 zmv 删除了文件名中的一些前导空格。
我首先在测试环境中尝试了该命令,看起来不错。但我没有检查文件大小。
当我女朋友将硬盘重新连接到她的 Mac 上后,所有重命名的文件都显示文件大小为 4KB(空)!我搞砸了我不知道怎么办。
我假设数据仍然存在,但我以某种方式搞砸了文件系统。
有人明白我做错了什么吗?更重要的是,您是否有机会恢复文件?我将不胜感激任何建议。
答案1
作为特登提到的,当写入“外部”文件系统时,Mac OS 对每个文件使用两个文件名。第一个包含实际内容,第二个包含已存储在资源分支中的元数据。您将元数据文件名重命名为内容文件名,从而删除了该过程中的内容文件。
不过,我有点不同意他的观点,即原件被覆盖了。数据应该位于磁盘中(我希望它不是 SSD),但您不再拥有它们的文件名,并且集群将被标记为可用空间。
如果文件已上传到 OneDrive,则您已经有一个副本。这里的一个优点是您拥有磁盘中原始文件名的完整列表。如果您不这样做,请继续阅读。
首先,在磁盘上进行任何进一步的恢复之前,您应该制作一个副本并使用它,例如使用dd
.这样,您就可以避免在恢复尝试期间使情况变得更糟,因为您将处理数据的副本。
第二步是尝试使用类似的工具进行恢复ntfsundelete,尝试恢复已删除的条目。
第三,由于这些文件可能是从不同的系统完整复制的,因此我预计这些文件(通常)不会被碎片化,而是使用顺序块,因此可能可以通过文件雕刻来恢复其中的大部分文件。
在这种情况下,像 photorec 这样的工具应该能够找到大部分照片,即使无法访问文件系统元数据。
最后,请记住备份您可能恢复的内容!
祝你好运
答案2
现在很难推荐任何东西,但如果我是你,我会尝试使用 R-Studio Undelete - 根据我的经验,它是从许多文件系统(包括 ext2、ext3、ext4、fat32)恢复意外删除或损坏的数据的最佳应用程序、NTFS 等。请停止对带有文件的分区进行任何更改(不再重命名、复制等任何操作)。此时您写入的任何内容都会使恢复数据变得更加困难(如果不是不可能的话)。
一个稍微无关紧要的部分:
当您发现文件系统数据出现意外不一致时,要做的第一件事就是停止写作到您的设备或此文件系统,然后您将设备带到专业/服务中心。
如果专业人士无法联系或太贵,那么您可以创建一个完整的分区映像,然后开始工作仅有的与此图像。
你绝不继续使用源文件系统甚至设备,因为不一致可能是由硬件故障引起的,进一步的写入(有时甚至是读取)可能会加剧问题。
答案3
如果您没有覆盖文件,则可以轻松恢复所有文件。如果它们是图像,最好的选择是使用 JPEG 文件雕刻工具。 JPEG 很容易雕刻,因为它们在某种程度上是自我验证的。来自 CGSecurity 的照片记录在我推荐的开源工具中。
如果您想要更多乐趣,可以使用开源程序尸检
在执行其他操作之前,您应该制作驱动器的取证磁盘映像。你可以这样做ewfacquire,它是 libewf 的一部分。
答案4
很抱歉您丢失了数据。正如其他人指出的那样,可能很难恢复这些文件,因为它们现在在硬盘驱动器中被标记为免费数据。首先,只安装该系统只读,以避免覆盖数据。
当您查找 JPEG 时,请查看recoverjpeg
,它经过优化以查找原始光盘中的图像 - 请参阅此处:http://www.rfc1149.net/devel/recoverjpeg。有适用于它的 Debian 软件包。