Linux找回误删文件

Linux找回误删文件本文介绍了如何在 Linux 中使用 testdisk 和 photorec 恢复误删的文件 包括直接从硬盘恢复 从备份文件恢复以及使用 photorec 处理更严重的情况

大家好,欢迎来到IT知识分享网。

当不小心使用rm -rf /*删除了文件之后,数据就这么丢了吗?当然不会,下面介绍几种方法,有可能恢复文件,但是也不一定能成功,笔者就有一次这种经历,试了几种方法后,最终只有testdisk的photorec才把文件恢复了,但是恢复的文件文件名都不是原来的名字了(内容还是不变的),最后写了程序来解析这一堆文件,才勉强找回了部分丢失的文件,满满都是泪,所以还是要记得备份

testdisk

testdisk不仅可以恢复删除的文件,还可以恢复分区表,这里笔者会同时介绍这两种功能

1.安装

sudo apt update \ sudo apt -y install testdisk 

2.重建分区表

  1. 执行 sudo testdisk
  2. 选择是否要记录日志
  3. 选好磁盘,选择下面的Procced
  4. 选择分区表类型(按实际情况来,我的是EFI GPT)
  5. 选择Analyse分析当前磁盘分区表
  6. 选择QuickSearch快速搜索分区
  7. 按Enter,然后选择下面的Write保存搜索出来的分区表到主引导记录(MBR)

3.恢复分区表

3.1.备份分区表

  1. 执行 sudo testdisk
  2. 选择是否要记录日志
  3. 选好磁盘,选择下面的Procced
  4. 选择分区表类型(按实际情况来,我的是EFI GPT)
  5. 选择Analyse分析当前磁盘分区表
  6. 选择Backup备份分区(这个时候目录下会产生一个backup.log的文件)

3.2.从备份恢复分区表

  1. 执行 sudo testdisk
  2. 选择是否要记录日志
  3. 选好磁盘,选择下面的Procced
  4. 选择分区表类型(按实际情况来,我的是EFI GPT)
  5. 选择Analyse分析当前磁盘分区表
  6. 选择Backup备份分区
  7. 按L选择备份文件
  8. 找到备份的backup.log文件后,选择下面的Load恢复分区表

4.恢复文件

4.1.直接从硬盘恢复文件

  1. 执行 sudo testdisk
  2. 选择是否要记录日志
  3. 选好磁盘,选择下面的Procced
  4. 选择分区表类型(按实际情况来,我的是EFI GPT)
  5. 选择Advanced进入该磁盘选择分区
  6. 选好分区后选择下方的List进入该分区
  7. 选择要恢复的文件,按c
  8. 选择要恢复文件存放的目录,按c保存

4.2.从备份文件中恢复

注意这里的备份文件只有误删的文件,而没有未被删除的文件,所以千万不要用它来备份磁盘

4.2.1.备份文件
  1. 执行 sudo testdisk
  2. 选择是否要记录日志
  3. 选好磁盘,选择下面的Procced
  4. 选择分区表类型(按实际情况来,我的是EFI GPT)
  5. 选择Advanced进入该磁盘选择分区
  6. 选择分区后选择下方的Image Creation进入该分区
  7. 选择备份文件存放的目录,按c保存
  8. 之后可以在存放的目录找到image.dd文件
4.2.2.从备份文件中恢复文件
  1. 执行 sudo testdisk image.dd
  2. 选择是否要记录日志
  3. 选择磁盘image.dd,选择下面的Procced
  4. 选择分区表类型为None:
  5. 选择Advanced进入该磁盘选择分区
  6. 选择分区后选择下方的Undelete进入选择恢复文件的界面
  7. 选择要恢复的文件,按c
  8. 选择恢复后的文件存放的目录,按c保存
  9. 可以看到文件恢复到了存放的目录
4.2.3.photorec恢复所有文件

使用photorec工具,这个方法可以真的恢复rm -rf /* 删除的文件,缺点是文件恢复之后文件名是随机生成的,且目录结构也是不对的

  1. 执行 sudo photorec
  2. 选好磁盘后,选择下面的Procced
  3. 选好分区后,选择下面的Search
  4. 选择分区的文件格式(按实际情况来,一般linux是ext格式,windows是ntfs格式)
  5. 选择恢复文件存放的目录,按c保存
  6. 可以看到存放的目录中多了很多recup_dir开头的目录(可惜里面的文件的文件名都不是原来的文件名了)

extundelete

  1. 使用LiveCD或U盘启动进入Ubuntu
  2. 安装extundelete
 sudo apt update \ sudo apt install extundelete 
  1. 卸载所有分区
 sudo umount /dev/nvmeXn1pY #这里nvmeXn1pY是分区名,可以使用lsblk命令查看所有磁盘和分区 
  1. 查看可以恢复的文件
 #查看xxx文件或xxx目录下所有文件和目录的inode编号 ls -i xxx #查看inode_num的目录下可以恢复的文件 #如果inode_num==2,则可以查看所有可以恢复的文件,因为2是/目录的inode编号 sudo extundelete /dev/nvmeXn1 --inode inode_num #这里nvmeXn1是磁盘 
  1. 恢复文件
  • 4.1 恢复所有文件
    • sudo extundelete /dev/nvmeXn1 –restore-all
  • 4.2 恢复指定目录
    • sudo extundelete /dev/nvmeXn1 –restore-directory /path/to/directory
  • 4.3 恢复指定文件
    • sudo extundelete /dev/nvmeXn1 –restore-file /path/to/deleted/file
  • 4.4 指定输出目录
    • sudo extundelete /dev/nvmeXn1 –restore-all –output-dir /path/to/restore
    • sudo extundelete /dev/nvmeXn1 –restore-directory /path/to/directory –output-dir /path/to/restore
  • 4.5 恢复指定inode的文件
    • sudo extundelete /dev/nvmeXn1 –restore-inode inode_num
    • sudo extundelete /dev/nvmeXn1 –restore-inode inode_num –output-dir /path/to/restore

safe-rm

这个东西是防止误删用的,原理是用了alias命令,这样执行rm命令会转移到safe-rm程序来执行,而不是原来的rm程序,有兴趣的读者可以去看一下

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/150996.html

(0)
上一篇 2025-03-15 22:15
下一篇 2025-03-15 22:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信