Linux误删文件/目录后,extundelete安装及恢复过程中的相关问题及解决

起因

一个迷糊就把专门存放重要文件的目录 rm 掉了,心都在滴血了,,,
分别使用了debugfs、extundelete进行文件恢复,但debugfs恢复出来的是乱码;extundelete恢复过程中因只有一个硬盘无法umount(只因以前在安装RHEL的时候只划分一个硬盘,挂载在根目录上)。实操过程中出现一些问题及解决方法,遂对其进行记录总结。

1. extundelete安装及恢复文件过程

extundelete的安装恢复操作过程可以参考博客文章,链接为:link

2. 安装extundelete过程中,出现configure:error: Can’t find ext2fs library问题

(1)tar解压缩下载的extundelete包后,在root下执行./configure,出现缺少 ext2fs库 的问题,可通过

sudo yum install e2fslibs*

进行依赖包的下载安装,我使用此命令并不能解决此问题 。
然后也尝试了在yum的核心配置文件夹(/etc/yum.repos.d/)下添加其他的国内下载地址,但也解决不了问题 。

解决方法: 后查找原因得知我的linux上缺少yum本地源镜像,遂通过查找安装对应版本的mirror包,实现相应镜像源的安装。此部分可参考链接:link2; 以及配置本地源后出现的 “Error parsing config…” 的解决办法:link3
安装完本地mirror后,通过命令

yum list | grep e2fs

查找e2fs相关的软件包,再将未安装的包用** yum install e2fsxxxx.xxxx **进行安装。完成后再执行 ./configure、make、make install命令完成安装。

3. 安装extundelete完成后,出现command not found问题

(1)当安装完成后可以通过在terminal中输入

extundelete -v

进行验证是否安装成功。如果成功,会返回显示安装版本号信息等。
(2)可通过命令

lsblk -f 或者命令 df -hl

进行查看磁盘树分区及相应的挂载点信息等。记录误删文件所在的磁盘Filesystem信息(如/dev/sda1)用于后续文件恢复前的磁盘解挂/挂载操作
(3)但我遇到的问题是,在普通用户模式下,输入

extundelete  --inode 2   /dev/sdb1

进行扫描误删除的文件,会返回extundelete:Permission denied when trying to open filesystem /dev/sdb1的问题;但使用超级用户模式的情况下,输入上述命令,它又会返回bash:extundelete:command not found的错误。(在普通用户模式下,已经验证了extundelete安装成功。)
解决方法: 在进入超级用户root时,输入命令

sudo su -

注意: su后面接【(空格)- 】。
此时,可在超级用户root下,使用extundelete进行2级目录下的误删除文件扫描分析。【出现Command not found的原因在于:在终端使用su变成超级用户的时候没有将root的路径环境一起切换过来,从而导致身份虽然已经是root,但是工作的环境和路径依旧是普通用户的。使用“sudo su -”可以在成为root的同时将root的工作路径也一起切换过来了。】

4. 误删文件后,使用extundelete进行文件恢复过程 注意事项

(1)误删文件后,不要再对该磁盘进行任何写入操作;
(2)立即对该磁盘分区进行解挂操作,命令如下

umount /dev/sdb1  

如果上述命令提示busy,需要使用如下命令强制解挂:

fuser -m -v -i -k  /home/IC_file

其中,我将新磁盘 /dev/sdb1 挂载在 /home/IC_file 路径下,所以使用 fuser 命令后面接的就是磁盘所在挂载点。
注意: 此时会提示kill一些进程的信息,输入y继续即可。然后便会退出 root 模式,进入普通用户模式,同时路径会自动进入 未解挂的磁盘 的home目录下。此情况下,再输入 ** sudo su - ** 命令,重新进入 root 模式,进行后续 extundelete 操作【下面(3)…】。
(3)使用extundelete进行误删文件扫描;

extundelete --inode 2 /dev/sdb1 

(4)误删文件恢复:

extundelete /dev/sdb1 --restore-file del_file1              //恢复误删单个文件:del_file1
extundelete /dev/sdb1 --restore-directory del_directory     //恢复误删文件目录:del_directory
extundelete /dev/sdb1 --restore-all                         //恢复误删的所有文件

(5)恢复出来的文件/目录都保存在未解挂的磁盘文件目录 RECOVERED_FILES 中,且有些文件的名字已经更改,需要自己辨认解决。

(6)恢复文件结束后,挂载被解挂的磁盘:

mount /dev/sdb1 /home/IC_file

即将磁盘 /dev/sdb1 重新挂载到 /home/IC_file上面,方可访问 /home/IC_file 内的文件信息。
注意: mountumount 操作都需要进入 root 下进行。
挂载/解挂后,可通过lsblk -fdf -hl 或者 df /home/IC_file 命令查看是否 挂载上/解挂掉 相应的磁盘。

5. 总结

安装linux的时候添加多个磁盘分区很重要!!!

正所谓鸡蛋不能都放在一个篮子里!!!

使用 rm 要谨慎!!!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值