我的一位同事在运行以下命令时意外删除了 /usr/* 数据:rm -rf /usr/*
。现在这成了一个大问题。那台机器上有很多好的数据。结果,大多数命令都不起作用了。有没有什么办法可以恢复这台机器?我并不是数据恢复方面的专家。
请帮我指出一个解决方案/程序。以下是有关该机器的一些信息。如果需要更多信息,请告诉我。
-bash-3.00# uname -a
Linux penguin 2.6.9-5.EL #1 Wed Jan 5 19:22:18 EST 2005 i686 i686 i386 GNU/Linux
-bash-3.00# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 9729 78043770 8e Linux LVM
-bash-3.00#
答案1
我的建议:
- 谷歌搜索“Undelete for Linux”,你会发现类似http://www.r-tt.com/data_recovery_linux/。您可以使用它来取消删除任何您想要恢复的文档。
- 采取措施避免将来再发生这种情况。您需要的是一种复制分区的方法,例如 Acronis TrueImage for Linux。如果您运行 Acronis TrueImage for Linux,它会将硬盘的完整克隆复制到一个文件中(您可以安全地将其离线),这样如果将来出现任何问题,您始终可以从裸机恢复。
答案2
首先,从实时 CD 或恢复盘启动并备份数据。您可能还想从 /etc 包含系统配置。
您可以尝试重新安装现有系统,保持您想要保留的分区不变。只要您没有将好的数据保存在任何系统分区中(希望不是在 /usr 下),您就应该能够在安装过程中保留这些数据。
如果其他方法都失败了,请从头开始安装并从备份中恢复。
考虑改变你的同事的访问权限。
答案3
我假设您使用的是 Redhat,因为我也使用的就是这个:
步骤 1- 由于 /usr (man hier) 中不应该有任何实际数据存储,因此您应该能够使用以下命令重新安装所有系统二进制文件:
cd /root
rpm -Va > filename
rpm -qf `cat filename | awk '{print $3}'` | sort | uniq > filename2
yum reinstall `cat filename2`
但是如果 /usr 中确实有一些未由发行版安装的数据,那么请忘记我刚才说的一切,因为使用该磁盘会减少您恢复已删除数据的机会。
答案4
如果您丢失了一两个文件,那么恢复删除的临时解决方案可能会有所帮助,但是由于删除了如此大量的数据,我认为追逐这一点并不是有效利用时间。
从另一个系统复制文件的建议可能会让您重新启动并运行,但可能会使您的系统处于“不纯”状态,其中并非所有内容都回到了原来的状态。
我的建议是全新安装到另一个磁盘(或另一台计算机),然后手动安装旧驱动器(或使用实时 CD 启动旧计算机)并复制重要数据。
然后,把这当作一个警告,
- 确保你对“好数据”有一个自动的、最新的备份,这样你就不会再遇到这种情况了。
- 审查谁拥有系统的管理权限,并制定何时以及如何使用系统的政策。您的同事是否需要以 root 身份运行才能执行他们要执行的操作?