cat*_*hv0 31 shell data-recovery shell-script
我通过运行不小心删除了一个文件:
rm -rf ./Desktop/myScript.sh
Run Code Online (Sandbox Code Playgroud)
我认为可以恢复文件,因为rm命令会暂时删除。如何在 Mac OSX 上恢复已删除的文件?
JRF*_*son 31
MacOS 是 Unix 操作系统,rm意思是“再见”。GUI 界面允许您将文件移动到垃圾箱(然后您可以恢复),但这不是您所做的。如果您有备份(例如,您正在运行 Time Machine),那么您将被保存。
澄清
严格来说(正如@ire_and_curses 指出的那样)arm只是删除文件的目录条目,同时保留它使用的磁盘块,不受影响。如果您可以让文件所在的文件系统停顿,您可以通过一些高级方法尝试重新发现这些块的内容。也可以购买一些恢复工具来恢复损失。核心问题是没有其他任何东西重用您的文件所代表的任何磁盘块。
MacOS 还有一个安全删除命令 ( srm),它会在文件被unlink编辑之前覆盖文件,使其无法恢复。我使用这个unlink术语是因为这是与 shellrm命令相关的底层系统调用。这为下面的讨论的下一部分奠定了基础。
边注
[我应该赶紧补充一点,即使您多次覆盖磁盘,也有办法读取以前写入的内容十几次或多次。要正确消毒磁盘以进行处理,确实需要酸浴、大锤子和碎纸机。]
unlinking 文件会减少文件的 inode 链接计数。如果该值达到零,则该文件将从文件系统目录中删除,并释放其磁盘块以供重新使用。这仅在没有进程打开文件时发生。管理员经常会发现文件系统正在使用大量空间,而这些空间无法通过磁盘块的简单总和(例如du)来解释,这常常令管理员感到困惑。最常见的原因是打开的文件已被删除,因此它不再出现在其目录中。原因是磁盘块一直处于使用状态,直到使用该文件的最后一个进程终止。
打开文件并立即执行unlink它实际上是创建安全临时文件的常见做法。lsof如果您查找链接数 (NLINK) 为零的文件,诸如此类的工具可以公开这些原本不可见的文件。
在 Unix 和 Linux(其中 MacOS 是品牌的 Unix)中,rm如果可以,则遵循 Unix 哲学“do-it”。也就是说,如果您有删除文件的权限(即您的目录允许写入),那么rm就按照您的要求进行操作。您可能希望创建一个 shell 别名rm='rm -i',在执行操作之前提示您进行确认。如有必要,使用-f带有rm覆盖的开关。rm当您glob删除 like时,别名最有用rm *.log。也就是说,您可以选择跳过列表中的文件。
根据您的内容,但您可以使用不同的 3rd 方软件来执行此操作,例如:
还有很多。
您可以通过在 App Store 中输入“数据恢复”来找到更多应用。
更高级的方法是在恢复模式下启动你的 OSX(或者如果可以的话卸载你的分区)并手动查找它(如果你记得脚本中的一些特定文本)。
一些例子:
diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"
Run Code Online (Sandbox Code Playgroud)