使用extundelete数据恢复
有很多时候运维人员会选择直接rm -rf 某文件或者目录。这是一个很不好的习惯,推荐时mv到/tmp目录下,并写一个脚本定期清理/tmp下的内容,在使用过程中如果发生了误删除的情况,可以使用extundelete恢复数据。
在Linux下,通过命令rm -rf可以将数据直接从硬盘删除,并且没有任何提示,Linux也并没有回收站功能,也就是说如果数据被删除后通过常规手段是无法恢复的。
extundelete的恢复原理是根据文件系统的inode信息,来获取单个西安文件系统下所有文件的信息,包括存在的和已经被删除侧文件,这些信息包括文件名和inde。然后利用inode信息结合日志去查询该inode所在的block,最后利用dd命令将这些信息备份出来,从而恢复数据文件。
这里我演示使用的是ubuntu大致过程:
删除数据
卸载磁盘分区
查询可恢复的数据
恢复文件
在数据被误删除后第一时间要做的就是卸载删除数据所在的磁盘或者磁盘分区,如果是系统根分区的数据遭到误删除,就需要将根分区以只读形式挂载。原因是,将文件删除后,只是将文件的inode节点中的扇区指针清零了,市级文件还储存在磁盘上,如果磁盘以读写模式挂载,这些数据块就可能被操作系统分配出去了,以只读模式挂载硬盘,可以防止数据被覆盖的风险,提高恢复成功的几率。
[bash]
root@2a6f1781eb94:~# apt-get install extundelete
root@2a6f1781eb94:~# vi 123.txt
[/bash]
[bash]
root@knickers:/root# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 19G 4.0G 14G 23% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
udev devtmpfs 487M 4.0K 487M 1% /dev
tmpfs tmpfs 100M 960K 99M 1% /run
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 497M 152K 497M 1% /run/shm
none tmpfs 100M 48K 100M 1% /run/user
[/bash]
删除后:
开始恢复:
[bash]
root@knickers:~# extundelete /dev/sda1 --restore-file /root/123.txt
[/bash]
这时候会在当前目录下新建一个文件夹/RECOVERED_FILES
其中文件恢复会按照原路径恢复。
这里可以看到。已经恢复成功了 md5值也没有改变,证明恢复的信息是完整的。
网上有很多关于这个软件的使用说明,这里只是重现一下,留个记录。