删除/ usr / local怎么办?

我想将目录移动到/usr/local而不是mv -r typed rm -r

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

有什么建议?

更新:

我明白这种失败并不那么困难。 但未来呢?
有没有办法安全删除文件(例如在Windows中为所有已删除的文件gona垃圾)并且如果意外删除将恢复它们?

或者更好地使用备份,它可以保护ubuntu这个非常薄弱的​​地方?

如果您需要恢复已删除的文件,则必须立即关闭新安装的系统而不使用它。 如果禁用交换,您可以从live CD运行。 请参阅此处的指南 。

但是,大多数情况下,更好地替换 /usr/local的内容然后尝试恢复 。 至少如果您以正常方式使用/usr/local

通常, /usr/local用于安装您自己从源代码编译的软件。 如果您只是(或大部分)将其用于此目的,那么您应该重新安装软件(即,重新创建/usr/local并构建和安装您之前构建和安装的程序和/或库)。

与尝试恢复内容相比,这可能会减少工作量并缩短时间。 它肯定会更可靠。 如果丢失了要检索的信息(例如尚未备份的文档的内容),则数据恢复是合适的。 但是它不能可靠地回复你之前拥有过的所有文件。

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

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

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

在未来预防这种情况

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

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

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

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

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

备份

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

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

移动或重命名系统目录很少见,通常是不必要的。 我建议避免在顶级系统目录上执行任何操作,除非您需要,特别是如果您不能容忍破损。

避免-r除非必要时(没有mv -r这样的东西)

rm命令不同, mv命令没有任何-r标志(有关详细信息,请参阅man mv )。 您不需要这样的标志,甚至不需要移动非空目录。 如果您避免在不需要的情况下使用-r作为命令,并且在使用-r的少数情况下要特别小心,那么您可以降低数据丢失或系统其他不良更改的风险。

如果要删除而不是删除系统文件,请使用gksudo nautilus (小心!)。

您可以通过运行gksudo nautilus打开root文件浏览器窗口。 (在Ubuntu的某些更高版本中,并不总是安装gksudo 。你可以通过安装gksu包来获得它,或者你可以在它的位置使用sudo -H 。 你不应该使用普通的sudo来运行图形程序。 )这会给你图形文件浏览界面,function基本无限。

这有其自身的危险, 我认为它不比命令行更安全 。 但是,当您删除文件时,它应该转到垃圾箱而不是真正删除。 它将转到root用户的垃圾箱 – 而不是普通用户帐户的垃圾箱。 您可以在同一根文件浏览器窗口中访问root用户的垃圾箱。

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

如果您选择使用根文件浏览器窗口,请记住,就像使用sudo运行命令一样,错误会导致系统范围的后果。 此外, 从根文件浏览器窗口运行的任何程序本身都将以root身份运行 。 出于这些原因,我建议您在使用后立即关闭根文件浏览器窗口。

除了Eliah的答案。

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

rsync示例(在损坏的主机上,通过SSH从好主机复制/usr/local ,将断开的根分区挂载到/mnt/broken_root ):

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

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

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

总结: LapTop006指出Ubuntu软件包不应该在/usr/local安装任何东西。 找出它们是否有的一种方法是运行grep '/usr/local/' /var/lib/dpkg/info/*.list 。 这列出了所有的(因此它的输出通常是空白的)。

如果您确实想尝试恢复数据, wzzrd 建议尝试使用ext3grep 。