各位小伙伴大家好,我是运维虫子!

今天,我们聊一聊,如果在Linux平台下,执行rm -rf误删除文件,我们可以做哪些数据恢复的工作以及我们该如何应对不小心删除数据。

windows恢复误删除文件相对比较简单,各种版本的磁盘工具都能轻松恢复。

本篇文章讲的是centos7下误删除文件的恢复。由于ext4与xfs恢复方法不一样,所以准备ext4和xfs两种格式的分区:




Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_linux rm 命令删除文件恢复


为了最后确认数据,这里从其他目录复制一份文件到测试目录:

[root@yunweichongzi data]# cp /etc/hostname /data/data-ext4/[root@yunweichongzi data]# cp /etc/hostname /data/data-xfs/[root@yunweichongzi data]# tree.├── data-ext4│   ├── hostname│   └── lost+found└── data-xfs    └── hostname3 directories, 2 files


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_linux rm 命令删除文件恢复_02


ext4误删除恢复

Ext分区文件可以使用恢复工具extundelete来恢复。

  • 通过手动删除的方法对ext4分区的文件进行删除:


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_删除文件_03


执行ls以后发现文件已经不在了。

[root@yunweichongzi ~]# cd /data/data-ext4/[root@yunweichongzi data-ext4]# rm -rf hostname[root@yunweichongzi data-ext4]# lslost+found[root@yunweichongzi data-ext4]#

开始安装恢复工具extundelete;

[root@yunweichongzi ~]# yum install epel-release -y[root@yunweichongzi ~]# yum install extundelete -y

卸载分区/dev/vdb1;

[root@yunweichongzi ~]# umount /dev/vdb1

执行恢复命令;

[root@yunweichongzi ~]# extundelete /dev/vdb1 --inode 2

就可以看到已经删除的文件了


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_备份文件_04


恢复文件:extundelete /dev/vdb1 --restore-all

注意:最好是用--restore-all参数,恢复单个文件或者恢复目录可能会报错。

在当前目录下会创建一个RECOVERED_FILES目录,通过md5比对确认是同一个文件。


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_linux rm 命令删除文件恢复_05


xfs文件恢复

网上提到XFS也能用extundelete恢复,我用这个工具一直没成功过。

xfs是用xfsdump 与 xfsrestore 工具进行备份恢复。

安装xfsdump

yum install -y xfsdump

利用xfsdump备份磁盘。

xfsdump -f /data/xfsbackup /dev/vdc1


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_Centos如何恢复被删除的文件_06


模拟删除文件;

[root@yunweichongzi data]# cd data-xfs/[root@yunweichongzi data-xfs]# lshostname[root@yunweichongzi data-xfs]# rm -rf hostname [root@yunweichongzi data-xfs]# ls[root@yunweichongzi data-xfs]#

恢复文件;

[root@yunweichongzi data]# xfsrestore -f xfsbackup backup/其中xfsbackup是上面执行xfsdump生成的备份文件,bakup/意思为文件恢复到指定目录


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_删除文件_07


进入backup目录,通过MD5对文件进行校验,文件是刚刚删除的文件。


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_linux rm 命令删除文件恢复_08


如何应对rm -rf

工作中,由于rm -rf 带来损失的新闻比比皆是,那我们应该做些什么来应对误删除呢?

方法有许许多多,这里介绍一个比较好一点的办法,建立rm回收站。

vim ~/.bashrc注释掉rm=rm -i如何添加下面的内容


Centos如何恢复被删除的文件 centos7 rm rf 恢复删除文件_备份文件_09


回收站演示;

使用rm -rf提示mv没有-r参数不能使用,利用rm 删除文件以后,利用rl就可以查看回收站内容,如果要彻底删除,就用cleartrash命令。

[root@yunweichongzi data]# rm -rf xfsbackup mv: invalid option -- 'r'Try 'mv --help' for more information.[root@yunweichongzi data]# rm xfsbackup [root@yunweichongzi data]# lsdata-ext4  data-xfs[root@yunweichongzi data]# rlxfsbackup[root@yunweichongzi data]# cleartrash clear sure?[n]y

总之,平时要养成重要数据备份的好习惯,恢复工具也不能保证百分百恢复,免得等误删除以后才追悔莫及。