撤消“ rm -rf〜”命令?


115

我有一个我不想命名为'〜'的文件夹,所以从命令行输入

rm -rf ~

并意外删除了我的主文件夹(因为〜解析为/ home / username)。有什么办法可以退回,还是我基本上需要从头开始重新创建帐户?


18
什么文件系统?
塔尔内·卡尔曼

6
显然,你们没有幽默感。
布隆克维斯特

21
尽管这不能直接回答您的问题,但rm -rf "~"引号会查找该文字名称,而不是扩展它。但是无论如何,我都会害怕使用它–我会使用类似lscd首先使用的方法来验证我是否获得了正确的目录,或者从GUI文件管理器中删除了该文件夹。也许先重命名dir(mv "~" tilde),然后验证并删除。
Henrik N

2
为了将来,不要在命令行上交互使用rm。使用诸如垃圾桶之类的实用程序,您1)再也不会犯同样的错误,并且2)无法习惯于rm不好的shell别名,这会给您带来麻烦。
弗雷德·纽克

9
@HenrikN:./~代替“〜”一样,但也可以与其他常见的有问题的文件名一起使用,例如以短划线开头并且看起来像选项的文件名。
弗雷德·纽克

Answers:


148

通常,没有简单的方法可以退回。

您可以从日常备份中还原。


194
您对备份的评论是残酷的,而且是100%。
本杰明·班尼尔

3
OS X设置为备份怎么着吧应该工作(尤其是时间胶囊)。请参阅maketecheasier.com/…,以获得有关如何在Ubuntu上获得相同效果的建议。
托尔比约恩Ravn的安徒生

4
@ThorbjørnRavn Andersen-的确如此,除非Time Machine精神崩溃。我有时间机器在六个月内两次对我发狂。
假名称

异地备份很棒,而且价格合理。我使用Backblaze(Mac / Windows)的价格为每台计算机每月$ 5。许多人似乎喜欢Crashplan(Mac / Windows / Linux)。
Henrik N

23
每天什么???
卢克M

66

其他人(例如@RiMMER@Adam@James T)提到,对于大多数文件系统,有可能恢复大部分或全部数据(也许没有文件名),因为实际上数据并未被清零,只能删除从文件表。这不仅适用于Linux,而且适用于Windows和Mac。

但是,没有人提到最重要的事情- 关闭计算机。现在。

许多程序-包括您当前正在使用的Internet浏览器-会将数据缓存到硬盘驱动器,并且您所做的几乎任何事情都会导致计算机调整大小/写入交换文件。这两件事都会写入硬盘驱动器的空闲扇区,有可能覆盖您的宝贵数据。

因此,请关闭计算机,取出硬盘驱动器,然后将其放入另一台计算机。将硬盘驱动器安装为只读,然后将文件恢复到单独的硬盘驱动器上。当你恢复一切可能的利益-而只有那么-写的文件复制回原来的驱动器。


11
甚至关闭过程也可以写入硬盘驱动器。我犹豫不决,建议立即拔掉计算机的电源,因为那肯定会使情况变得更糟,但是...根据数据的重要性,您可能需要考虑一下。
BlueRaja-Danny Pflughoeft

1
取决于驱动器/ OS /挂载点有可能立即卸载和/或现场只读不用重新安装打开计算机电源,然后关闭等
马修Scharley

1
killall rm而不是关闭。
弗雷德·纽克

1
根据主目录的大小和硬盘的大小,覆盖包含数据的空闲扇区的机会非常小。
Mike Speed

您可以使用这种方法恢复文本文件而没有很多困难(只要您对其中的内容有一个大概的了解),但是二进制文件是如此困难,以至于基本上是不可能的。
2011年

13

我相信,每个Linux用户在某个时间点都必须先实际学习这一痛苦的课程,然后才能真正了解备份的重要性,并注意细节和注意事项。

例如,如果要删除看起来很奇怪的文件,则可以首先在该奇怪的文件上运行没有副作用且不会更改数据的命令。例如,您是否跑步

cd ~

在尝试删除该文件夹之前,您会发现它会将目录更改为您的主文件夹,而不是该~文件夹。一旦完成了足够的疑难解答步骤以了解真正的命令,您便需要正确地cd进入该~文件夹,然后可以按向上箭头键从历史记录中提取最后一个命令,然后更改cdrm然后才尝试删除该文件夹。

我建议在执行任何永久性操作之前,采取类似步骤。它不是永久性的或万无一失的,但是,如果您在执行具有副作用的动作时采取这种谨慎的态度,则有更好的机会防止这些糟糕的时刻。


4
在飞跃ls之前和在您之前,先看看rm
LawrenceC


6

您可以尝试使用testdisk取消删除单个文件。这显然仅适用于ext2和NTFS(但仍然值得尝试)。

如果您有ext3或ext4,则可以使用photorec恢复已知文件,最终可能会恢复所需数量。Photorec恢复没有文件名信息的文件,因此遍历文件可能很乏味。


4

如果您的外部驱动器足够大,则可以选择另一个最安全的选择。您将需要足够的空间来存储包括可用空间在内的整个主分区。

从CD引导,根本不挂载主驱动器。安装外部驱动器。dd将主驱动器分区放入外部驱动器上的文件中。将文件挂载为回送设备可在此映像上执行不删除操作,这是安全的,前提是您不会损坏原始文件系统。根据文件系统的不同,可能要尝试很多事情,其中​​有些可能具有破坏性。

即使我以只读方式挂载它也不知道会做什么,这为我节省了一次Reiser4的beta版本。我当时仍在写日记,所以在某处读书。

这也是从即将死去的驱动器中保存数据的好技术。


1
+1表示在大多数日志记录的FS上,即使是只读装载也可能将数据写入日志记录活动中。
sleske 2012年

2

有一些技术可以通过检查尚未回收的索引节点来恢复文件。删除后写入文件系统的数据越多,恢复数据的可能性就越小。从意外数据删除中恢复的最佳策略是从备份中恢复。


2
alias rm="rm -i"

假设您正在使用Bash shell(将其放入您的.bashrc文件中,以便将其持久保存到您打开的新shell中)。

这将导致rm要求您确认要删除的内容,这特别好,特别是在执行-rf时,但是它还会在提示符下将'〜'扩展到主目录的完整路径,这应该会给您提示您不是要删除文件“〜”,而是实际上是您的homedir。

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

从技术上讲,这不是您问题的答案,但可能会帮助您将来避免此类问题。

编辑:某些人可能会阻止您使用此技术,因为使用“ rm”命令会使您不太谨慎。以我的经验,这远非事实。实际上,别名的作用是阻止您使用“ rm -rf”-如您所知,它将导致许多您不想回答的提示-并获得无提示的“ rm -rf” “您需要故意将rm命令引用为/ bin / rm(或其他名称)。通常,这将导致更自觉和故意地使用“ rm”命令-因为您总是需要在使用rm之前先在头脑中选择“ rm或/ bin / rm”,才能在服务器和任何其他发生的情况下使用要登录。每个人在使用rm之前都认为会更安全的世界!


2
取决于您所使用的系统。至少在RHEL5和OS X 10.6上,将-f覆盖该-i选项。
丹尼尔·贝克

我不知道。我在YMMV后面附加我的建议,“不要在家中尝试,或者更重要的是不要在工作中尝试”!
aaa90210 2011年

9
如果这样做,则有一天您将没有此别名-也许您正坐在另一台计算机上,或者已进入某处-您将使用rm来使用安全网。您会做一些您后悔的事情。
弗雷德·纽克

1
@FredNurk确实如此。最好的选择是自己添加-i,或者不使用-f选项。
阿尔达·希

当我有很多文件要删除时,我从开始rm -i my_list_of_files。然后,我使用CTRL-C并回想我的命令以将其修改为rm -rvf my_list_of_files
Luc M

2

很抱歉您的数据。其他人都对如何处理您的数据问题有所了解,但是这里有一些有关下次您看到文件夹已校准时如何处理的信息~

  1. 找到创建它的人,并确保他们再也做不到。
  2. 不要使用-rfrm或任何疯狂的强大参数来进行rm删除。取而代之的是让它顺畅而缓慢,并确保您可以看到正在发生的事情。可以将代字号转义到shell中,而无需将其扩展到您的主目录。从理论上讲,您可以 rm -rI \~,但是可以更进一步。
    1. 首先,cd \~要进入该文件夹,甚至可以使用它pwd来检查您是否已到达该文件夹。十个在那里时,将其内容删除。再次小心,但是rf -rI *如果需要也可以清理文件夹.*
    2. 现在,使用向上移动cd ..并使用删除目录rmdir \~

1

我只是cd .snapshot并还原文件。但是,我在工作时这样做,我也不知道.snapshot目录来自何处。我虽然可能是Linux功能。



-3

rm是永远的。

尽管这现在对您无济于事,但是您将来可以不使用rm或真正强迫自己使用,可以在路径rm中添加之前找到的脚本,该脚本将文件移至其他时间清理的垃圾箱(允许您会犯错误而不是成为SOL)。


7
唯一的问题是,使用rm命令可能会使您变得有些快速和松散,并忘记了您的公司Linux服务器上没有便捷的撤消删除功能……哎呀……
jmort253 2011年

2
-1这与投票不足的答案有同样的问题(因此,我会偷别人的评论):有一天没有此脚本,例如,您正坐在另一台计算机上,或者您已将其缩进某处–并且您将使用rm习惯于安全网,并且您会做一些遗憾的事情。
DMA57361 2011年

@Corey尽管我同意这可能会导致不良习惯,但+1是因为此答案被否决了
John Militer
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.