我妈妈不小心把一些重要文件放在了她的 /tmp 上。当然,现在它们不见了。
这是昨天发生的(此后机器已启动两次)
我想尝试恢复删除的文件。它们位于 /tmp 上,与 / 的其余部分位于同一分区,因此我需要一个在已安装的系统上运行的工具(或者我可以使用 livecd ...)
现在,我正在尝试在刚刚下载的 systemrescuecd 上运行 testdisk。我可以从 /tmp 获取一些文件,但不是全部。(它是正确的工具吗?那些“红色”文件到底是什么?只有其中一些可以恢复吗?)
答案1
您还可以使用extundelete
首先卸载(umount
)已删除文件的文件系统。
然后读取章节如果删除了文件该怎么办。
您可以extundelete
从经典的 Ubuntu 存储库安装:
sudo apt-get install extundelete
或者更好的是,你可以下载最新版本并编译它:
cd ~/Download
tar -xf extundelete-*.*.*-.tar.bz2 #Replace *.*.* by the version
cd extundelete-*.*.*
sudo apt-get install e2fslibs-dev #Required for compilation
./configure
make
sudo make install
extundelete --version #Should be your *.*.* version
使用示例:将目录中所有已删除的文件恢复Images
到新创建的目录中restore
sudo extundelete --restore-directory Images/ -o restore /dev/sda3
如果您看到文件XXXX
具有以下格式,那么这就是坏消息了:
Unable to restore inode NNN (Images/XXXX): Space has been reallocated.
查看所有恢复的文件(查找您的文件):
find restore -name '*'
备份您的文件并删除此临时目录restore
cp restore/Images/XXXX MY_BACKUP_DIRECTORY
sudo rm -rf restore
答案2
数据恢复(尤其是 EXT 文件系统的数据恢复)应从实时 CD 或其他不依赖于您要恢复的分区的系统尝试。卸载磁盘或将其重新安装为只读对恢复工作大有帮助。
大多数时候,我尝试使用dd
或类似工具创建分区或磁盘的映像,这样我就不用在磁盘本身上工作了:
dd if=/dev/sd[xx] of=/media/backup_drive/recovery.img
获得图像后,你可以使用类似ext3grep
尝试找到您要查找的文件。您可以尝试很多不同的开关,但这可能是一个好的开始:
ext3grep --restore-file 'tmp/moms-file.txt' recovery.img
如果您不知道文件的名称,该ext3grep
实用程序还提供了几种不同的方法来搜索文件系统。查看ext3grep --help
各种搜索方法。
答案3
我更喜欢使用 ext4magic 作为:
sudo ext4magic /dev/sdc3 -r -f $USERl/Documents/ -d /tmp/local/tmp/
注意你必须自己解析符号链接
参考:
http://ext4magic.sourceforge.net/howto_en.html
答案4
我无法使用 ext4magic 或 extundelete 恢复我的 crontab 文件。
在 Debian 上,root 的 crontab 位于此处:
/var/spool/cron/crontabs/root
但是,通过使用以下命令,我至少能够从日志中手动恢复我的 crontab。
grep CRON /var/log/syslog.* -i| awk -F " CMD " {'print $2;'} |sort | uniq
它将只输出已执行的 cron 作业(没有计时),但至少这比从头开始要多得多。
如果你不记得某些 cron 作业的运行频率,请获取完整日志(例如 syslog.1),这将为你提供一天中运行的次数:
grep CRON /var/log/syslog.1 -i| awk -F " CMD " {'print $2;'} |sort | uniq -c |sort -n