Linux找回误删文件

本文介绍了如何在Linux中使用testdisk和photorec恢复误删的文件,包括直接从硬盘恢复、从备份文件恢复以及使用photorec处理更严重的情况。还提到了extundelete工具和safe-rm的使用,强调备份的重要性。
摘要由CSDN通过智能技术生成

当不小心使用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程序,有兴趣的读者可以去看一下

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值