警告

警告

我在使用 buildout 进行操作时愚蠢地使用 rm -rf 从我的 Mac OS X Snow Leopard 机器中删除了一些源代码。我想尝试再次恢复这些文件。从那时起我就再也没有碰过系统,试图寻找答案。

我发现文章中似乎 grep 方法是可行的,但是当我在计算机上运行它时,我尝试在磁盘上运行它时出现“资源繁忙”的情况。

我正在使用这个命令:

sudo grep -a -B1000 -A1000 'video_output' /dev/disk0s2 > file.txt

当我运行时,出现的是“dev/disk0s2” df

我运行时得到这个:

grep:/dev/disk0s2:资源繁忙

我不是这方面的专家,我只是尽力了。请问有人能进一步帮助我吗?我差点丢掉两天的源代码工作!

谢谢

答案1

使用 Ubuntu LiveCD 尝试一下(这里)或 GPartEd 启动 CD(这里) 或类似的东西,您可以从 CD 而不是硬盘分区启动(假设您有另一台计算机,您可以在其中下载并刻录其中一个)。即使他们不了解 HFS+ 文件系统,他们也能够以原始格式读取它。

这是最安全的方法。这样一来,操作系统就不会锁定驱动器,您也不会面临交换文件或临时文件覆盖宝贵的空闲块的风险。

答案2

一旦您启动到其他设备,您需要记住,如果您正在 grep 文件名,您可能无法获得您想要的内容,因为文件名不在文件本身中 - 除非您将它包含在注释或某些内容中。

您需要 grep 查找文件中存在的一些短语。

答案3

您必须grep使用disk而不是disk slice。以我的机器为例,

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *240.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Sandisk 240G            239.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

disk0是整个磁盘,disk0s2是我删除文件的分区。Grep 在磁盘片上不起作用

$ sudo grep --binary-files=text --context=10 '192.168.1.196' /dev/disk0s2 > recovered.txt
Password:
grep: /dev/disk0s2: Resource busy

但可以在磁盘本身上运行

$ sudo grep --binary-files=text --context=10 '192.168.1.196' /dev/disk0 > recovered.txt

警告

grep在 OSX 中读取原始磁盘不起作用 - 并且会导致 OSX 崩溃。当我运行上述命令时,Activity Monitor显示grep正在快速读取数据。读取大约 3GB 后,OSX 挂起,我不得不重新启动。

相关内容