如果删除了 /usr/local 该怎么办?

如果删除了 /usr/local 该怎么办?

我想将目录移动到/usr/local但却mv -r输入了rm -r

有没有办法恢复 Ubuntu 12.04 上已删除的数据?

有什么建议么?

更新:

我知道这种丢失并不那么困难。但未来会怎样呢?
有没有办法可以保护已删除的文件(例如在 Windows 上 - 所有已删除的文件都会被丢弃)并在意外删除时恢复它们?

或者更好地使用备份来保护 ubuntu 中这个真正薄弱的地方?

答案1

如果需要恢复已删除的文件,必须立即关闭新安装的系统并且不要使用它。你可以从实时 CD 运行前提是 swap 被禁用。 看此处的指南

然而,大多数时候,最好代替/usr/local然后尝试的内容恢复。至少如果你/usr/local以正常方式使用的话。

通常,/usr/local它用于安装您自己从源代码编译的软件。如果您只(或主要)将其用于此目的,那么您应该重新安装该软件(即重新创建/usr/local、构建和安装程序和/或库,就像您之前构建和安装它们一样)。

与尝试恢复内容相比,这很可能需要更少的工作量和更少的时间。而且它肯定更可靠。当您丢失了想要检索的信息(例如未备份的文档内容)时,数据恢复是合适的。但它无法可靠地将您之前拥有的所有文件准确归还给您,也无法将文件归还到您之前拥有的位置。

如果您/usr/local以通常的方式使用,那么您应该重建其内容。

如果您不记得那里有什么,那么重建文件可能会很困难。但这会让您更难恢复文件;如果您对已删除文件了解不多,那么恢复文件会非常困难(通常是不可能的)。

如果你从来没有用过它,那么可能没有什么影响。所以如果你不记得曾经/usr/local其用于任何用途,您只需重新创建它,sudo mkdir /usr/local而无需执行任何其他操作。(其子文件夹仍将丢失,但如果发现它们不存在,则使用它们的任何东西通常都会创建它们,因此这通常不是问题。)

预防未来再次发生此类情况

这解决了问题的更新部分。

Ubuntu 和 Windows 中的文件删除安全功能比较

您正在寻找的功能可能更类似于 Windows 中的系统还原,而不是 Windows 回收站。毕竟,当您在 Ubuntu 中删除桌面上的文件时,它们会被发送到垃圾箱(除非您指示要永久删除它们,例如按Shift+ Delete)。在垃圾箱中,它们可以被真正删除(通过清空垃圾箱)或可以从垃圾箱中取出。此行为与 Windows 中的回收站相同。

在 Windows 和 Ubuntu 中,当您从命令行删除文件时,它们会被真正删除。(这并不意味着它们无法恢复,但通常意味着它们很难恢复,并且很可能有无法恢复的部分。)

虽然 Ubuntu 和 Windows 都有一个逻辑存储区域,用于存放标记为删除的文件(垃圾箱和回收站),但 Ubuntu 却不是具有与 Windows 中的系统还原相对应的任何功能。

进行备份

如果你需要防止丢失任何数据,那么你的猜测完全正确:备份是正确的解决方案。然而,这并不是 Ubuntu 的一个特别“薄弱的地方”;你可以严重损坏任何以 root 身份运行,即可进入系统的一部分rm -r!(deltree在 Windows 中以管理员身份运行同样危险。)

避免对系统目录进行任何不必要的操作

移动或重命名系统目录的情况很少见,而且通常没有必要。我建议避免在顶层系统目录上执行任何操作,除非你需要,特别是当你不能容忍破坏时。

除非必要,否则避免-r(不存在这样的事情mv -r

与命令不同rm,该mv命令没有任何-r标志(参见man mv有关详细信息)。您不需要这样的标志,即使移动非空目录也是如此。如果您避免-r在不需要的地方使用 for 命令,并且在少数情况下使用 时格外小心-r,您可能能够降低数据丢失或系统发生其他不良变化的风险。

gksudo nautilus如果你想使用(小心!)垃圾代替删除系統文件。

您可以root通过运行 打开文件浏览器窗口gksudo nautilus。 (在 Ubuntu 的某些更高版本中,gksudo并不总是安装。 您可以通过安装包 来获取它gksu,或者您可以使用sudo -H它来代替它。您不应该使用普通的方法sudo来运行图形程序。) 这为您提供了一个具有几乎无限功能的图形文件浏览界面。

这本身就存在危险,而且我不认为它比命令行更安全。但是,当您删除文件时,它应该进入垃圾箱而不是真正被删除。它将进入根用户的垃圾箱——而不是您的常规用户帐户的垃圾箱。您可以从同一个根文件浏览器窗口访问根用户的垃圾箱。

以 root 身份将文件发送到垃圾箱不是一种很常见的操作,因此我建议确保它适用于不重要的文件(可能是您为测试而创建的文件),并且您可以恢复测试文件,依赖于系统的这种行为。

如果您选择使用根文件浏览器窗口,请记住,就像使用 运行命令时一样sudo,错误可能会对整个系统造成影响。此外,从根文件浏览器窗口运行的任何程序本身都将以 root 身份运行。出于这些原因,我建议您一旦不再使用根文件浏览器窗口,就立即关闭它。

答案2

除了 Eliah 的回答之外。

如果您有另一个类似的 12.04(同样最新)安装,您可以尝试使用tarrsync恢复/复制(或重建)目录结构。如前所述,它主要用于从源代码编译的软件(默认前缀)。

rsync示例(在损坏的主机上,/usr/local通过 SSH 从良好的主机复制,损坏的根分区安装到/mnt/broken_root):

rsync -axAX --progress --stats root@GOOD_HOST:/usr/local /mnt/broken_root/usr

注意:使用 rsync 时要小心尾随斜杠。

答案3

看一眼有没有办法恢复 Ubuntu 上 /usr/local 目录中的文件?服务器故障。

总之:膝上型电脑006指出 Ubuntu 软件包不应该安装任何东西/usr/local确定他们是否是运行grep '/usr/local/' /var/lib/dpkg/info/*.list。这会列出所有具有的(因此其输出通常为空白)。

如果你想要尝试恢复数据,哇喔 建议ext3grep

相关内容