linux恢复硬盘误删文件
前段时间,一个同学拿一个硬盘过来让我帮他恢复被删除的监控录像文件。经检查该硬盘是linux的ext3磁盘格式。我的linux是装在VMware虚拟机上的。我的笔记本通过usb连接他的硬盘。经过如下操作帮他恢复了被删除内容。
1、通过 #fdisk -l 命令查询虚拟机是否识别硬盘了,在这儿,可以看到,虚拟机系统并没有识别硬盘。有两种处理办法,如下:
a、在主系统(我的是windowsXP)中弹出硬盘,点击虚拟系统界面,将活动光标置于虚拟系统中,此时再次插入硬盘,可以看到主系统右下角弹出虚拟机识别硬盘的消息提示,否则,重新上述操作,直到虚拟机识别硬盘为止。这种方法比较笨的,大家可以采取第二种方法,如下:
b、在虚拟机界面的VM菜单选项中设置即可,按以下菜单操作:VM/Removable Devices/USB Devices/选择要移除的硬盘。此时,可以看到XP系统右下角弹出安全退出USB设备的消息提示,说明硬盘已被虚拟系统识别。再次通过#fdisk -l命令确认虚拟系统是否识别硬盘。
2、在/mnt目录下建立一个挂装USB存储器的目录,用下面的命令就可以创建:#mkdir /mnt/usb。
3、一切准备工作已做好,终于可以将USB设备(/dev/sdb1)挂装到/mnt/usb目录下,用下面这个命令就可以了:
#mount-text3/dev/sdb1//mnt/usb-oiocharset=utf8
mount命令格式:mount[-参数][设备名称][挂载点][其他参数]
-t指定设备的文件系统类型,在此,使用-text3是由于所使用硬盘的文件系统类型是ext3;如果是ntfs则使用-tntfs等等,大家可根据自己的文件系统类型灵活修改。
-o 指定挂载文件系统时的选项,在此, -o iocharset=utf8 设定utf8字符集。假设你的locale是zh_CN.gb18030,相应命令应为 -o iocharset=gb2312;否则(在此,所使用Linux系统locale是zh_CN.UTF-8),使用gb2312即可。4、运行如下命令即可查看USB存储器中的文件信息.做mount只是检查下硬盘,在恢复被删除文件时,还需要umount。#ls -l /mnt/usb
5、检查linux是否自带了e2fsprogs这个软件:
[root@hscbu-tx18~]#rpm-qa|grepe2fsprogs
e2fsprogs-libs-1.39-20.el5
e2fsprogs-devel-1.39-20.el5
e2fsprogs-1.39-20.el5
这表示已安装e2fsprogs软件,如果没有安装,在光盘中找,或到网上找http://rpmfind.net/linux/RPM,
http://rpm.pbone.net。
6、下载安装ext3grep:
#wgethttp://ext3grep.googlecode.com/files/ext3grep-0.7.0.tar.gz
#tarzxfext3grep-0.7.0.tar.gz
#cdext3grep-0.7.0
#./configure
#make&&makeinstall
#ext3grep
没错误的话就安装成功了。
7、卸载硬盘,必须在不同的目录下进行卸载,也就是说不能在/mnt/usb目录下进行卸载.Linux下卸载硬盘命令如下:
#cd/root
#umount/mnt/usb
卸载成功。我们可以看到,/mnt/usb目录下已经为空。如果显示deviceisbusy,可以用如下命令进行卸载:
#cd/root
#fuser-km/mnt/usb
#umount/mnt/usb
8、然后运行ext3grep查看被删除的文件:
#ext3grep/dev/sdb1--ls--inode2
现在恢复文件:
#ext3grep/dev/sdb1--restore-all