作为一名运维人员,保证数据的安全是根本职责linux文件恢复工具,所以在维护系统的时侯,要慎之又慎,而且有时难免会出现数据被误删掉的情况,在这个时侯改怎么快速、有效地恢复数据呢?本文我们就来介绍一下Linux系统下常用的几个数据恢复工具。
一、如何使用“rm-rf”命令
在Linux系统下,通过命令“rm-rf”可以将任何数据直接从硬碟删掉,而且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删掉后通过常规的手段是难以恢复的,因而使用这个命令要特别谨慎。在使用rm命令的时侯linux虚拟主机,比较稳当的方式是把命令参数放在前面,这样有一个提醒的作用。虽然还有一个方式,那就是即将删掉的东西通过mv命令联通到系统下的/tmp目录下,之后写个脚本定期执行清理操作,这样做可以在一定程度上减少删掉除数据的危险性。
虽然保证数据安全最好的方式是做好备份,尽管备份不是万能的linux文件恢复工具,并且没有备份是万万不行的。任何数据恢复工具都有一定局限性,都不能保证完整地恢复出所有数据,因而,把备份作为核心,把数据恢复工具作为辅助是运维人员必须坚持的一个准则。
二、extundelete与ext3grep的优缺
在Linux下,基于开源的数据恢复工具有好多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加大大,本文重点介绍extundelete的使用。
三、extundelete的恢复原理
在介绍使用extundelete进行恢复数据之前,简单介绍下关于inode的知识。在Linux下可以通过“ls–id”命令来查看某个文件或则目录的inode值,比如查看根目录的inode值,可以输入:
[root@cloud1~]#ls-id/
2/
由此可知,根目录的inode值为2。
在借助extundelete恢复文件时并不依赖特定文件格式,首先extundelete会通过文件系统的inode信息(根目录的inode通常为2)来获得当前文件系统下所有文件的信息,包括存在的和早已删掉的文件,这种信息包括文件名和inode。之后借助inode信息结合日志去查询该inode所在的block位置,包括直接块红旗linux系统下载,间接块等信息。最后借助dd命令将这种信息备份下来,因而恢复数据文件。
四、安装extundelete
extundelete的官方网站是/zixunimg/eepwimg//,其目前的稳定版本是extundelete-0.2.4。,在安装extundelete之前须要安装e2fsprogs和e2fsprogs-libs两个依赖包。
e2fsprogs和e2fsprogs-libs安装特别简单,这儿不做介绍。下边是extundelete的编译安装过程:
[root@cloud1app]#tarjxvfextundelete-0.2.4.tar.bz2
[root@cloud1app]#cdextundelete-0.2.4
[[email protected]]#./configure
[[email protected]]#make
[[email protected]]#makeinstall
成功安装extundelete后,会在系统中生成一个extundelete可执行文件。extundelete的使用十分简单,读者可以通过“extundelete--help”获得此软件的使用方式。
五、extundelete用法解读
extundelete安装完成后,就可以执行数据恢复操作了,本节详尽介绍下extundelete每位参数的含意。extundelete用法如下:
extundelete--help
命令格式:
extundelete[options][action]device-file
其中参数(options)有:
--version,-[vV],显示软件版本号。
--help,显示软件帮助信息。
--superblock,显示超级块信息。
--journal,显示日志信息。
--afterdtime,时间参数,表示在某段时间过后被删的文件或目录。
--beforedtime,时间参数,表示在某段时间之前被删的文件或目录。
动作(action)有:
--inodeino,显示节点“ino”的信息。
--blockblk,显示数据块“blk”的信息。
--restore-inodeino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会手动置于当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩充名。
--restore-file'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件置于当前目录下的RECOVERED_FILES目录中。
--restore-files'path',恢复命令参数,表示将恢复在路径中已列举的所有文件。
--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
-jjournal,表示从早已命名的文件中读取扩充日志。
-bblocknumber,表示使用之前备份的超级块来打开文件系统,通常用于查看现有超级块是不是当前所要的文件。
-Bblocksize,表示使用数据块大小来打开文件系统,通常用于查看早已晓得大小的文件。
六、实战:extundelete恢复数据的过程
在数据被误删掉后,第一时间要做的是卸载被删掉数据所在的c盘或c盘分区,倘若是系统根分区的数据受到误删掉,就须要将系统步入单用户,但是将根分区以只读模式挂载。这样做的缘由很简单,由于将文件删掉后,仅仅是将文件的inode结点中的磁道表针清零,实际文件还储存在c盘上,假如c盘以读写模式挂载,这种已删掉的文件的数据块就可能被操作系统重新分配出去,在这种数据块被新的数据覆盖后,这种数据就真的遗失了,恢复工具也回力无天。所以,以只读模式挂载c盘可以尽量减少数据块中数据被覆盖的风险,以提升恢复数据成功的百分比。
6.1通过extundelete恢复单个文件
1.模拟数据误删掉环境
在演示通过extundelete恢复数据之前,我们首先要模拟一个数据误删掉环境,这儿我们以ext3文件系统为例,在ext4文件系统下的恢复方法与此完全一样。简单的模拟操作过程如下:
[root@cloud1~]#mkdir/data
[root@cloud1~]#mkfs.ext3/dev/sdc1
[root@cloud1~]#mount/dev/sdc1/data
[root@cloud1~]#cp/etc/passwd/data
[root@cloud1~]#cp-r/app/ganglia-3.4.0/data
以上是常见的几个数据恢复工具在Linux系统下的使用的详细内容。更多信息请关注PHP中文网其他相关文章!