APP下载

Linux中拯救误删的文件

2016-03-13

网络安全和信息化 2016年1期
关键词:优盘磁盘命令

在Windows中当误删了文件后,如果只是将其放到回收站中,那么恢复起来是没有难度的。否则的话,可以借助于R-Studio等工具,可以有效恢复数据,操作起来也很简单。和Windows不同,Linux中没有提供回收站,如果使用类似于“rm- rf”之类的命令,将文件删除后,想将其恢复操作起来就没有那么简单了。当然,只要Linux使用的是EXT3文件系统,借助于ext3grep等工具,依然可以将消失的文件找回来。

在Linux中常用的文件系统包括 ext2,ext3,Reiserfs以及XFS等,其中的ext2和ext3使用的最为广泛。我们知道,Linux标准文件系统起始于VFS(Virtual File Sytem,虚拟文件系统),之后发展到ext和ext2。应该说,ext2是Linux上最为标准的文件系统。ext2文件系统一般由超级块,块组描述符和块组构成,一个数据块大小可以是1KB到4KB,可以在创建文件系统时指定,否则的话系统会根据分区大小自动设置块大小。在文件系统分区起始的1024字节存放的是引导程序,之后的1024字节存放的是超级块信息,包括一些全局参数,例如块大小,总块数,每组的块数以及每组的inode等。接着块组描述符单独占用一个新的块空间,后面的块被组织成块组,用于一种存储数据。

ext3是一种日志式文件系统,是在ext2文件系统基础上增加一个特殊的inode(日志文件)日志记录功能,用来记录文件系统元数据或者各种写操作的变化。这样,在磁盘操作事务被实际写入到磁盘最终位置之前,首先通过日志文件的记录功能,顺序的记录了文件系统的各种写操作和元数据的变化信息。简单介绍了ext3文件系统的特点,下面就来说明如何在其中恢复误删的文件。首先需要下载安装ext3grep这款软件,下载地址: http://www.filewatcher.com/m/ext3grep-0.10.1.tar.gz.230939-0.html。执行“tar zxvf ext3grep-0.10.1.tar.gz”,“cd ext3grep-0.10.1”,“make”,“make install”等 命令,完成该工具的安装操作。之后运行“ext3grep”命令,如果显示其参数信息,说明安装成功。此外,还需要e2fsprogs程序的支持,在linux中已经内置有该程序,执行“rpm –qa|grep e2fsprocgs”命令,可以查看其安装信息。

配置好工具之后,就可以实际恢复数据了。这里为了便于说明,我们创建了一个虚拟的磁盘分区,之后在其上测试文件恢复效果,在实际操作时,可以在真实的分区上进行。执行“cd /data”命令,进入“data”目录。执行“dd if=/dev/zero of=datadisk count=1024000”命令,创建一个体积为524Mbde 名为“data-disk”的空文件。其中的“DD”命令的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。“if =dev/zero”参数作用是从一个文件读取读取,这里的文件是名为“dev/zero”的输入设备,主要用来初始化文件。该设备无穷尽地提供0。这样该“data-disk”文件被填满了0字节,在“count”参数指名读取的块数。在使用该空文件挂载虚拟磁盘之前,必须在其上建立一个文件系统。

执行“mkfs.ext3 –q data-disk”命令,将“datadisk”这个空文件格式化为ext3虚拟磁盘分区,“mkfs.ext3”命令的作用是将指定的设备或者磁盘分区构造为ext3文件系统。其中的“-q”参数可以省略有关新建文件系统的提示信息。这样,在“datadisk”文件就包含了一个新建立的ext3文件系统,如同一个刚刚被初始化的磁盘。执行“mkdir /tmp/virtual-fs”命令,创建名为“/tmp/virtualfs”的目录,执行“mount–o loop=/dev/loop0 /data/data-disk /tmp/virtual-fs”命令,将上述虚拟磁盘分区“/data/data-disk”挂载到“/tmp/virtual-fs”目录中,其中的“mount”命令用来挂载设备,其中的“loop=/dev/loop0”参数表示使用一个环回设备挂载上述文件系统,使用“-o”参数通知Mount命令使用何种回环设备。执行“df–h /tmp/virtual-fs”命令,您就可以如同使用其它磁盘一样使用该虚拟磁盘了。

接下来,就可以向该虚拟磁盘中复制文件了。例如执 行“cp /etc/hosts /tmp/virtual-fs”,“cp /var/file.c/tmp/virtual-fs”等,在该虚拟磁盘中存储一些文件。之后执行“cd/tmp/virtual-fs”命令进入该虚拟磁盘,执行“rm–rf ./*”命令,将其中的文件全部删除。执行“ls”命令,可以看到其中空空如也。对应的,执行“unmount /tmp/virtualfs”命令,可以卸载该虚拟磁盘。然后就可以让ext3grep程序来大显身手,找回消失的文件。执行“ext3grep /tmp/virtualfs --ls –inode 2”命令,使用ext3grep命令对该虚拟磁盘进行扫描,在扫描报告中可以看到所有可以恢复的文件信息,包括文件名称,删除时间,访问权限等参数。

根据这些信息,选择需要恢复的文件,例如执行“ext3grep /tmp/virtual-fs–restore-file file.c”命令,执行恢复操作,在“–restorefile”参数后面跟随需要恢复的文件名。当恢复完毕后,ext3grep会在当前路径中创建名为“RESTORED_FILES”的目录。用来存储恢复后的文件。当然,也可以执行“ext3grep/tmp/virtual-fs –restoreall”命令。来恢复该虚拟磁盘中的所有被删除的文件。当然,使用ext3grep恢复文件是有条件的,就是被删除的文件没有被其它文件覆盖,否则的话,ext3grep就无能为力了。为了能够顺利恢复数据,一旦误删了文件,就应该立即卸载文件所在的磁盘分区,停止在其上的所有读写操作,避免被删文件被新的数据块覆盖。

例如,当您发现你误删除了文件后,首先要卸载被误删除文件所在的分区,或者以只读的方式来挂载该分区。因为文件被删除后,其数据还存在磁盘上,执行以上操作的好处在于尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功率。如果被误删的文件在根分区,那么最好重启计算机,进入单用户模式。方法是启动系统,在Grub引导下启动后,在Grub的引导菜单中用上下健选中所要启动的Linux系统,按按下“e”键进入编辑模式。之后再选中系统的启动内核项(例如“kernel(hd0,0)/boot/vmlinuz or root=/dev/hda1”等),点击“e”键,在“grub>”提示符(例如“grub>kernel (hd0,0)/boot/vmlinuz or root=/dev/hda1”)的“hda1”后空一格,输入init 1(或者输入“single”),设定单用户模式,点击回车键返回前一页面,然后点击“b”键启动系统,就可以进入单用户模式。

进入单用户模式后,根分区还是以读写方式加载的,执行“mount -o ro,remount/ ”命令,把挂载方式由读写(rw)改为只读(ro)。如果被删除的文件不是根分区,也可以使用unmount命令该其卸载。例如,假设文件在“/dev/sda3”分区中,该分区挂载到“/home”目录,可以执行“umount/dev/sda3”或者“umount /home”执行卸载操作。当然,在卸载前要保证没有程序在访问该分区,否则卸载会失败,因此最好进入单用户模式来恢复文件。在实际的文件恢复操作时,当发现误删文件后,需要先载对应的分区,然后进入单用户模式进行恢复,这对于根分区中误删文件的恢复比较有利。为了便于使用,可以在别的电脑上编译和安装好ext3grep工具,然后将“/usr/local/bin”目录下的ext3grep可执行文件拷贝到优盘中,因为ext3grep无需动态加载库支持就可以独立运行。将该优盘插到待恢复的电脑上,执行“mount -t vfat /dev/sdb1/mnt”之类的命令,挂载优盘设备。

因为ext3grep程序会在当前目录下创建名为“RESTORED_FILES”的目录来存放被恢复的文件。因此在运行ext3grep命令前,先要切换到一个可以读写的目录中。如果进入了单用户模式,并且将根分区设成了只读,那么可以将恢复出来的文件放在优盘中。执行“cd /mnt”命令进入优盘根目录,之后按照上述操作方式,就可以恢复文件了。例如执要恢复“/dev/sda3”分区上文件,该分区安装点是“/home”目录,需要恢复“/home/user1/vi/tips.xml”文件,则执行“ext3grep /dev/sda3 --restore-file easwy/user1/tips.xml”命令即可。如果您无法记起误删的文件名或者误删除的是目录的话,可以执行“ext3grep /dev/sda3 --dump-names | tee filename.txt”命令。来查询可以恢复的所有文件信息,并将ext3grep命令的输出记录保存到“filename.txt”文件中,通过查看该文件,可以确定需要恢复的目标。

猜你喜欢

优盘磁盘命令
叶腊石聚合成型及其旋转磁盘的制作方法
只听主人的命令
解决Windows磁盘签名冲突
人脑优盘
修改磁盘属性
打造优盘系统维护盘
移防命令下达后
磁盘组群组及iSCSI Target设置
轻松打造多功能启动型优盘
这是人民的命令