用 rm 删除的文件/目录可以恢复吗?

use*_*215 85 rm data-recovery

是否可以使用rm和恢复从终端删除的文件/目录rm -r?。如果文件从图形界面删除,它可以从垃圾箱中恢复,但是如果使用 rm 实用程序删除了文件,您如何恢复文件?

enz*_*tib 73

为此trash-cli,我在我的包中使用了包和以下别名~/.bashrc

alias rm=trash
Run Code Online (Sandbox Code Playgroud)

并且trash-cli可以通过以下命令安装该软件包:sudo apt-get install trash-cli.

您删除的文件将移至垃圾箱,您可以在 nautilus 垃圾箱中看到它们。

您始终可以rm使用以下方法之一访问真实:

command rm something
'rm' something
\rm something
Run Code Online (Sandbox Code Playgroud)

还有一些命令可以从终端访问垃圾桶,trash-list, restore-trash(或trash-restore),可以trash-empty从包trash-cli安装(然后查看他们的手册页)。

最后要注意的是,不建议超级用户使用这样的别名,因为它会干扰系统操作。

  • 这是一种解决方法,但并没有真正回答问题。 (34认同)
  • 很好。我获得了一些知识。 (5认同)
  • 我认为用户也想知道是否有某种方法可以从命令行实现相同的行为。如果没有,我准备删除我的答案。 (3认同)

evg*_*eny 28

从终端删除它会永久删除它 - 恢复非常困难,有时甚至是不可能的。

如果您的分区类型是ext3(使用 进行检查System->Administration->Disk Utility),那么请查看ext3undel

如果不是(如果您使用默认设置安装了 Ubuntu ),请尝试该extundelete程序。

但不能保证您会恢复任何东西。


H.-*_*itt 13

您正在寻找:extundelete -从 ext3/ext4 分区恢复已删除文件的实用程序

要找到这样的包,您可以尝试: apt-cache search undelete

要使用该实用程序,请安装它: sudo apt-get install extundelete

安装后调用man extundelete并仔细研究。


小智 8

作为替代方案,如果您具体知道它是什么类型的文件......

sudo apt-get install foremost
Run Code Online (Sandbox Code Playgroud)

现在打开/etc/foremost.conf,您将看到一长串注释掉的行。如果您的文件类型存在,请取消注释该行(您可能还想删除不相关的行)。

如果您的文件类型不存在,请添加您自己的行。假设我想恢复一个 .css 文件,我知道它大约 40K。我可以添加这个:

css     n       40000   Theme\sName:     Plugin\sFixes
Run Code Online (Sandbox Code Playgroud)

第二列是区分大小写,第三列是大小上限,第四列是文件的开始方式(记住使用转义字符),最后一列是文件通常的结束方式。

使用以下命令(相应地编辑磁盘。可以使用df命令检查)

foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output
Run Code Online (Sandbox Code Playgroud)

接下来会发生的是,foremost 将创建一个名为 output 的文件夹,并将所有恢复的数据(在这种情况下)转储到该文件夹​​中。从那里您可以使用diffmeld比较恢复的“文件”,看看哪个是最新的。


Joh*_*ood 5

用最抽象的术语来说,每当您在图形界面上删除文件时,该文件都会“移动”到一个特殊的“缓冲区”,一个名为trash. 您可以在您的home目录中找到它,~/.local/share/Trash/. 从此目录中“删除”的文件将被真正删除。当您rm在文件上使用时,会发生这种真正的删除。

恢复已删除的文件极其困难。文件系统中的文件被表示为 B 树上的节点等。当使用 删除文件时rm,树被更新,硬链接数量减少,目录列表中的相应条目被删除。如果您的文件有硬链接,则您的文件绝对安全。你可以做一个file / -samefile filename. 如果您还记得它的 inode 编号,则可以搜索该文件(这几乎不是这种情况)。

另一种情况是当上述可能性都不成立时。每当您rm创建文件时,目录中的文件条目都会被删除,从而将硬链接的数量减少一个。如果硬链接的数量降为零,则指向 inode 上的文件的指针将被删除,或者被标记为要删除。无论哪种方式,您的文件“仍然”驻留在硬盘上。该文件实际上仅在随后的重新挂载时从硬盘中删除。此时的文件恢复极其困难,需要遍历文件系统树和表示实际磁盘块位置的 inode。有一个我听说过但从未使用过的流行工具,叫做extundelete. 虽然不能保证,但值得一试。

无论成功与否恢复文件,请尽快进行定期备份。这在 Ubuntu 上非常简单。


Sté*_*ane 1

抱歉,使用“rm”和“rm -f”从命令行删除的文件会绕过 Gnome 桌面上的“垃圾桶”。

您可能还想询问是否有任何 extfs“取消删除”工具,例如 FAT 和 NTFS 的工具。(我不知道有什么,但如果没有的话我会感到惊讶。)