问题描述
是否可以使用rm
和rm -r
恢复从终端删除的文件/目录?如果从图形界面删除文件,则可以从垃圾箱中恢复该文件,但如果使用rm实用程序删除文件,如何还原文件?
最佳解决方案
为此我在~/.bashrc
中使用trash-cli
包和以下别名
alias rm=trash
您删除的文件将被移至垃圾箱,您可以在nautilus trashcan中查看它们。
您始终可以使用以下方法之一访问真正的rm
:
command rm something
'rm' something
\rm something
还有一些命令可以从终端trash-list
,restore-trash
(或trash-restore
),trash-empty
访问垃圾桶,可以从包trash-cli安装(参见他们的手册页)。
最后请注意,不建议对super-user使用此类别名,因为它可能会干扰系统操作。
次佳解决方案
从终端删除它会永久删除它 – 恢复非常困难,有时甚至是不可能的。
如果您的分区类型是ext3
(使用System->Administration->Disk Utility
进行检查),请查看ext3undel。
如果不是(如果您使用默认设置安装了Ubuntu),请尝试extundelete
程序。
不能保证你会恢复任何东西。
第三种解决方案
您正在寻找:extundelete – 从ext3 /ext4分区恢复已删除文件的实用程序
要找到这样的包,您可以尝试:apt-cache search undelete
要使用该实用程序,请使用以下命令安装:sudo apt-get install extundelete
安装后调用man extundelete
并仔细研究。
第四种方案
作为替代方案,如果你具体知道它是什么类型的文件……
sudo apt-get install foremost
现在打开/etc/foremost.conf
,您将看到一长串已注释掉的行。如果您的文件类型存在,请取消注释该行(您可能还想删除不相关的行)。
如果您的文件类型不存在,请添加您自己的行。说我想恢复.css文件,我知道它大约40K。我可以添加这个:
css n 40000 Theme\sName: Plugin\sFixes
第二列是指case-sensitivity,第三列是指大小的上限,第四列是文件的起始方式(记得使用转义字符),最后一列是文件通常的结束方式。
使用以下命令(相应地编辑磁盘。可以使用df
命令检查)
foremost -v -T -c /etc/foremost.conf -i /dev/sda -o output
接下来会发生的是,最重要的是创建一个名为output的文件夹,并将所有恢复的数据(在本例中)转储到该文件夹中。从那里你可以使用diff
或meld
来比较恢复的’files’,看看哪个是最新的。
第五种方案
用最抽象的术语来说,无论何时删除图形界面上的文件,文件都是”moved”到一个特殊的”buffer”,一个名为trash
的目录。您可以在home
目录~/.local/share/Trash/
中找到它。来自此目录的文件”deleted”将被真正删除。当您在文件上使用rm
时会发生这种真正的删除。
恢复已删除的文件非常困难。文件系统中的文件表示为B-tree等上的节点。使用rm
删除文件时,将更新树,减少硬链接数,删除目录列表中的相应条目。如果有的话,你的文件有一个硬链接,你的文件是绝对安全的。你可以做一个file / -samefile filename
。如果你还记得它的inode编号,你可以搜索文件(事实并非如此)。
另一种情况是,上述可能性均不属实。无论何时rm
文件,都会删除目录中的文件条目,从而将硬链接数减少一个。如果硬链接的数量减少到零,那么指向inode上的文件的指针将被删除,或被标记为被删除。无论哪种方式,您的文件”still”都驻留在硬盘上。该文件实际上仅在后续重新安装时从硬盘上擦除。此时的文件恢复非常困难,包括遍历文件系统树和表示实际磁盘块位置的inode。我听说过一种流行的工具,但从未使用它,称为extundelete
。虽然没有保证,但值得一试。
成功恢复文件后,快速进行常规备份。它在Ubuntu上非常简单。
第六种方案
很抱歉,但是使用”rm”和“rm -f”从命令行删除的文件会绕过您在Gnome桌面上的”Trashcan”。
您可能还想询问是否有任何extfs“取消删除”工具,如FAT和NTFS。 (我不知道,但如果没有,我会感到惊讶。)