我通过运行意外删除了一个文件:
rm -rf ./Desktop/myScript.sh
我认为可以恢复该文件,因为该rm
命令会暂时删除。如何在Mac OSX上恢复已删除的文件?
我通过运行意外删除了一个文件:
rm -rf ./Desktop/myScript.sh
我认为可以恢复该文件,因为该rm
命令会暂时删除。如何在Mac OSX上恢复已删除的文件?
Answers:
MacOS是Unix OS,rm
表示“再见”。GUI界面允许您将文件移至垃圾箱(然后可以将其恢复),但这不是您要做的。如果您有备份(例如,正在运行Time Machine),则将保存。
澄清度
严格来说(如@ire_and_curses所指出的),rm
只需删除文件的目录条目,同时保持其使用的磁盘块不变。如果可以停顿文件所在的文件系统,则可以使用一些高级方法来尝试重新发现这些块的内容。也可以购买一些恢复工具来恢复损失。中心问题是,其他任何东西都不会重用文件所代表的任何磁盘块。
MacOS还具有安全的删除命令(srm
),该命令会在文件被覆盖之前将其覆盖,unlink
从而使其无法恢复。我使用该unlink
术语是因为这是与Shell rm
命令关联的基础系统调用。这为下面的讨论的下一个阶段奠定了基础。
边注
[我应该加急,即使您多次重写磁盘,也有一些方法可以读取以前多次写入的内容。要正确清洁磁盘以进行处置,实际上需要使用酸浴,大锤子和切碎机。]
unlink
删除文件会减少文件的inode链接计数。如果该值达到零,则从文件系统目录中删除该文件,并释放其磁盘块以供重新使用。仅当没有进程打开文件时才会发生这种情况。经常使管理员感到困惑的是,文件系统正在利用大量的空间,而磁盘块的简单求和(诸如之类的du
)无法解决。大多数情况下,原因是打开的文件已被删除,因此不再在其目录中表示该文件。原因是磁盘块将一直处于使用状态,直到使用该文件的最后一个进程终止。
unlink
实际上,打开文件并立即打开它是创建安全的临时文件的一种常见做法。lsof
如果您寻找链接计数(NLINK)为零的文件,则诸如此类的工具可以公开这些原本不可见的文件。
在Unix和Linux(MacOS是Unix的商标)中,rm
如果可以的话,它遵循Unix的“即做”原则而没有大张旗鼓。也就是说,如果您具有删除文件的权限(即您的目录允许写入),则按照rm
您的要求进行操作。您可能想要创建一个shell别名rm='rm -i'
,该别名会在执行操作之前提示您进行确认。如果需要,将-f
开关与rm
覆盖使用。rm
当您glob
删除like 时,别名别名最有用rm *.log
。也就是说,您可以选择跳过列表中的文件。
根据您的内容,但是您可以使用不同的第三方软件来执行此操作,例如:
还有很多。
您可以通过在App Store中键入“数据恢复”来找到更多应用。
更高级的方法是在恢复模式下引导OSX(或如果可能,则卸载分区)并手动查找(如果您还记得脚本中的某些特定文本)。
一些例子:
diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"