如何防止和恢复 Linux 中意外删除的文件
您之前可能听过这样的教训,或者您已经把它传授给别人了:恢复丢失文件的最佳方法是首先备份它们。不幸的是,意外总是会发生。人们删除了他们不想删除的文件,然后他们恳求他们友好的系统管理员恢复所有内容。请考虑一下这个关于实践、程序和技术的概述,以减少文件恢复的麻烦,并改善您的灾难响应。
备份
你知道这会是最重要的。数据恢复是一个耗时的过程,很少能产生 100% 正确的结果。如果你还没有备份计划,现在就开始吧。
更好的是,实施两个。首先,使用rsnapshot之类的工具为用户提供本地备份。此实用程序在目录中创建每个用户数据的快照~/.snapshots
,使他们能够轻松快速地恢复自己的数据。
还有许多其他开源备份应用程序 允许您的用户管理自己的备份计划。
其次,虽然这些本地备份很方便,但也要为您的组织设置远程备份计划。AMANDA或BackupPC等工具是完成此任务的可靠选择。您可以将它们作为守护程序运行,以便自动进行备份。
备份计划和准备既能节省时间,又能让您安心。没有什么比一开始就不需要应急响应程序更好的了。
班姆
在现代操作系统中,有一个垃圾文件夹,用户可以将不想要的文件拖到其中而不删除它们。传统上,Linux 终端没有这样的存放区域,因此许多终端高级用户都有永久删除他们认为不再需要的数据的坏习惯。由于没有“取消删除”命令,如果高级用户(或管理员)不小心删除了一个包含重要数据的目录,这种习惯可能会带来很大问题。
许多用户表示他们赞成彻底删除文件,声称他们希望计算机完全按照他们的指令执行。但是,这些用户中很少有人放弃他们的rm
命令而选择更彻底的命令shred
,这实际上会删除他们的数据。换句话说,大多数终端用户调用该rm
命令是因为它会删除数据,但他们知道文件恢复工具是黑客的秘密武器,因此感到很欣慰rm
。然而,使用这些工具会占用管理员的宝贵时间。不要让您的用户(或您自己)成为这种违反逻辑行为的牺牲品。
如果你真的想删除数据,那么这rm
是不够的。请使用shred -u
命令覆盖,然后彻底删除指定的数据
但是,如果您不想真正删除数据,请不要使用rm
。此命令功能不完整,因为它没有撤消功能,但可以撤消。相反,使用trashy或trash-cli在使用终端时将文件“删除”到垃圾箱中,如下所示:
$ trash ~/example.txt
$ trash --list
example.txt
这些命令的一个优点是它们使用的垃圾箱与桌面的垃圾箱相同。有了它们,您可以通过打开桌面垃圾箱文件夹或通过终端来恢复已删除的文件。
如果你已经养成了坏rm
习惯,发现 trash
命令很难记住,可以为自己创建一个别名:
$ echo "alias rm='trash'"
更好的是,为每个人创建这个别名。作为系统管理员,你的时间非常宝贵,不能因为有人输入了错误的命令而花费数小时来处理文件恢复工具rm
。
高效响应
不幸的是,这是无可奈何的。在某些时候,你必须恢复丢失的文件,甚至更糟。让我们来看看应急响应的最佳实践,让这项工作更轻松。在你开始之前,了解导致数据丢失的原因可以为你节省大量时间:
- 如果有人对垃圾箱的习惯粗心大意或弄乱了危险的删除或
shred
命令,那么您需要恢复已删除的文件。 - 如果有人意外覆盖了分区表,那么文件实际上并没有丢失。丢失的是驱动器布局。
- 如果硬盘出现故障,那么恢复数据就是次要的,更重要的是与损坏作斗争以恢复数据本身(您可以稍后再考虑将这些数据分解成可理解的文件)。
无论问题是如何开始的,请按照以下一些最佳实践开始您的救援任务:
- 无论出于何种原因,请停止使用包含丢失数据的驱动器。您在此驱动器上执行的操作越多,覆盖您尝试挽救的数据的风险就越大。停止并关闭受害计算机,然后使用拇指驱动器重新启动,或取出损坏的硬盘并将其连接到您的救援机器。
- 不要将受害硬盘用作恢复位置。将抢救的数据放在您确定可以正常工作的备用卷上。在确认数据已充分恢复之前,不要将其复制回受害驱动器。
- 如果您认为驱动器即将损坏,关闭电源后,您的首要任务是使用
ddrescue
或Clonezilla之类的工具获取重复映像。
一旦你意识到哪里出了问题,就该选择正确的工具来解决问题了。Scalpel 和 TestDisk 就是两个这样的工具,它们在磁盘映像和物理驱动器上的操作都一样好。
练习(或者,去打破常规)
在您的职业生涯中,您将不得不恢复数据。上面讨论的明智做法可以最大限度地减少这种情况发生的频率,但无法避免这个问题。不要等到灾难发生才熟悉数据恢复工具。设置本地和远程备份、实现命令行垃圾箱并限制命令后rm
,是时候练习您的数据恢复技术了。
下载并练习使用 Scalpel、TestDisk 或您认为可能有用的任何其他工具。不过,一定要安全地练习数据恢复。找一台旧电脑,在上面安装 Linux,然后生成、销毁和恢复。这样做至少能教会您尊重数据结构、文件系统和良好的备份计划。当需要真正运用这些技能时,您会感激知道该怎么做。