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


69

是否可以使用rm和还原从终端删除的文件/目录rm -r。如果从图形界面中删除了文件,则可以从回收站中将其还原,但是如果使用rm实用程序将其删除,该如何恢复呢?


对于恢复已删除文件(以任何形式)的工具,您可以看一下这个问题askubuntu.com/q/3883
Decio Lira 2010年

如果您希望将来还原文件,请不要使用“ rm”。可以使用“ rm-trash”实用程序: github.com/nateshmbhat/rm-trash
Natesh bhat

Answers:


63

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

alias rm=trash

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

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

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

command rm something
'rm' something
\rm something

也有命令从终端访问垃圾桶,trash-listrestore-trash(或trash-restore),trash-empty从包装垃圾CLI安装(当时看到自己的男人页)。

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


19
这是一种变通方法,但并不能真正回答问题。
evgeny

我认为用户还想知道是否有某种方法可以从命令行实现相同的行为。如果没有,我准备删除答案。
enzotib

3
很好。我已经学到了一些知识。
user3215

27

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

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

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

虽然不能保证您将恢复任何东西。


这对于台式机版本确实非常有用。
user3215

我怀疑这对于SSD驱动器是否有效,但是我们很乐意听到其他消息
马特

13

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

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

要使用该实用程序,请通过以下方式安装: sudo apt-get install extundelete

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


6

作为一种替代方法,如果您明确知道文件的类型...

sudo apt-get install foremost

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

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

css     n       40000   Theme\sName:     Plugin\sFixes

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

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

foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output

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


非常感谢。效果很好。我不小心删除了带有2个文件的php源文件。不到2分钟,它们就完美恢复了。在文件中我添加了:rm -fr php/php.confphp n 40000 <?php ?> ASCII
Shakiba Moshiri '18

5

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

恢复已删除的文件非常困难。文件系统中的文件表示为B树等上的节点。使用删除文件后rm,将更新树,减少硬链接的数量,并删除目录列表中的相应条目。如果您的文件有硬链接,那么绝对安全。你可以做一个file / -samefile filename。如果您还记得文件的inode编号,则可以搜索该文件(事实并非如此)。

另一种情况是上述可能性都不成立。每当您rm使用文件时,目录上的文件条目都会被删除,从而使硬链接数减少一个。并且,如果硬链接数下降到零,则指向inode上文件的指针将被删除,或被标记为要删除。无论哪种方式,您的文件“仍然”都驻留在硬盘上。实际上,仅在随后的重新安装时才从硬盘上删除文件。此时的文件恢复非常困难,涉及遍历文件系统树和代表实际磁盘块位置的inode。我听说过一种流行的工具,但从未使用过,叫做extundelete。尽管没有保证,但值得一试。

一旦成功恢复文件或不成功,就急于进行常规备份。在Ubuntu上,这非常简单。


2

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

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


哦...没关系!我认为可以从某个位置恢复它。
user3215

1

使用“ rm-trash ”实用程序,该实用程序将它们放入垃圾箱中以备以后检索,并支持“ rm”命令的所有选项。

sudo add-apt-repository ppa:nateshmbhat/rm-trash
sudo apt-get update
sudo apt-get install rm-trash

“ rm-trash”是

  • 旨在代替rm
  • 处理rm可以采取的所有选择
  • 处理文件名与垃圾箱中已有文件的冲突
  • 自动处理一些权限问题
  • 如果从任何其他脚本或间接调用rm,则系统会自动使用“ rm”命令
  • 显示适当的错误消息,如出现在 rm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.