说明:不一定有效,需要不断尝试
一,lsof
文件刚刚被删除,想要恢复,先尝试 lsof.
如果 lsof 不能看到文件,那么就需要使用恢复软件进行恢复.
lsof |grep data.file1
cp /proc/xxx/xxx/xx /dir/data.file1
要做的第一件事是立刻卸载被误删除文件所在的分区,或者重新以只读方式挂载此分区.
umount /dev/part
或
mount -o remount,ro /dev/part
删除一个文件,就是将文件 inode(inode 是操作系统寻找文件的目录,起到索引作用),节点中的扇区指针清除,同时,释放这些数据对应的数据块,而真实的文件还存留在磁盘分区中.但是这些被删除的文件不一定会一直存留在磁盘中,当这些释放的数据块被操作系统重新分配时,这些被删除的数据就会被覆盖.因此要立刻卸载分区.
二,ext3grep
sudo apt - get install ext3grep
参考资料 [4] 中对这个工具的使用有比较详细的说明过程.然而,正如参考资料 [5] 所言,这个工具只适合于 ext3 文件系统的,而新版本的 Ubuntu 系统一般都使用 ext4 文件系统,因此需要使用其它工具,如 extundelete.
三,extundelete
sudo apt - get install extundelete
使用这个工具,我成功的恢复了使用 rm 命令误删的文件.关于这个工具的使用方法,可见参考资料 [7].下面简单记录一下回复过程.
sudo extundelete / dev / sda1--restore - all
说明:/dev/sda1 是误删文件所在的分区.我的误删的文件原来在 / home/liyihai 里面的子目录中,而这个目录挂载于 / dev/sda1 分区(使用 df -h 命令查看).
执行上面命令后,会在当前目录中生成一个名为 RECOVERED_FILES 目录,并且将恢复的文件放到这个目录中.
根据参考资料 [7] 的说明,所恢复的文件会被改名,因此需要根据文件的内容,使用 grep 命令找出您想要的文件.
四,/casper/filesystem.squashfs
这个是 Ubuntu 光盘特有的文件,将解压缩的光盘文件夹下面 / casper/filesystem.squashfs 文件拷贝出来到一个单独的文件夹
cd 到刚拷贝出来 filesystem.squashfs 所在文件夹, 然后打开终端输入
unsquashfs filesystem.squashfs
回车执行
上一步执行完会生成一个 squash-boot 文件夹,然后在里面寻找你所误删的系统文件即可,在哪个目录下删除的就在对应目录下找
参考
[1] linux 下如何恢复 rm 命令删除的文件
[2] linux rm 文件恢复总结
[3] Linux 使用笔记: 实用 ext3grep 恢复目录及文件指南 (ext3 文件系统)
[4] ubuntu 中用 ext3grep 恢复 ext3 文件系统中误删的文件
[5] 问题:如何在 ext4 分区下恢复删除的文件
[6] Linux 下数据误删除不再是恐怖的事情,ext3grep 帮你恢复
[7] ext4 分区中恢复被删除的文件
[8] 恢复 Linux ext4 分区上误删除的文件
[9] 【Linux】Linux 系统 ext4 格式 删除文件恢复:extundelete
https://www.cnblogs.com/jikexianfeng/p/7349275.html (以上内容部分转自此篇文章)
http://blog.csdn.net/weiguang1017/article/details/52239685 (以上内容部分转自此篇文章)
https://www.jianshu.com/p/f5558050acb1 (以上内容转自此篇文章)
来源: http://www.bubuko.com/infodetail-2458286.html