是否可以使用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安装(然后查看他们的手册页)。
最后要注意的是,不建议超级用户使用这样的别名,因为它会干扰系统操作。
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 的文件夹,并将所有恢复的数据(在这种情况下)转储到该文件夹中。从那里您可以使用diff
或meld
比较恢复的“文件”,看看哪个是最新的。
用最抽象的术语来说,每当您在图形界面上删除文件时,该文件都会“移动”到一个特殊的“缓冲区”,一个名为trash
. 您可以在您的home
目录中找到它,~/.local/share/Trash/
. 从此目录中“删除”的文件将被真正删除。当您rm
在文件上使用时,会发生这种真正的删除。
恢复已删除的文件极其困难。文件系统中的文件被表示为 B 树上的节点等。当使用 删除文件时rm
,树被更新,硬链接数量减少,目录列表中的相应条目被删除。如果您的文件有硬链接,则您的文件绝对安全。你可以做一个file / -samefile filename
. 如果您还记得它的 inode 编号,则可以搜索该文件(这几乎不是这种情况)。
另一种情况是当上述可能性都不成立时。每当您rm
创建文件时,目录中的文件条目都会被删除,从而将硬链接的数量减少一个。如果硬链接的数量降为零,则指向 inode 上的文件的指针将被删除,或者被标记为要删除。无论哪种方式,您的文件“仍然”驻留在硬盘上。该文件实际上仅在随后的重新挂载时从硬盘中删除。此时的文件恢复极其困难,需要遍历文件系统树和表示实际磁盘块位置的 inode。有一个我听说过但从未使用过的流行工具,叫做extundelete
. 虽然不能保证,但值得一试。
无论成功与否恢复文件,请尽快进行定期备份。这在 Ubuntu 上非常简单。
抱歉,使用“rm”和“rm -f”从命令行删除的文件会绕过 Gnome 桌面上的“垃圾桶”。
您可能还想询问是否有任何 extfs“取消删除”工具,例如 FAT 和 NTFS 的工具。(我不知道有什么,但如果没有的话我会感到惊讶。)