多学一点(十二)——使用extundelete恢复Linux下误删除文件
2015-05-08 16:01
746 查看
通常来说,对于重要文件我们都应该定期备份(如 /etc 下的配置文件),以免在喝醉了手残了等异常状态下将重要文件误删除。然而,如果意外真的发生,而我们又没有做好备份,那赶紧试试手动恢复吧,这里使用的文件恢复软件为 extundelete 。1.重新挂载分区为只读状态:这是恢复文件的第一步,也是最关键的步骤之一。假如我们误删除的文件为 /data/catalina.out , /data 目录为 /dev/sdb5 的挂载点,因为对分区的写操作可能会导致我们恢复文件失败,所以要将该分区重新挂载为只读形式:
[root@localhost ~]# mount -o remount,ro /dev/sdb5执行该命令很可能会有错误提示出现,一般来说为目录被占用等信息,如下:mount: /data isbusy这时使用 fuser 命令查看哪些用户的那些进程在使用该目录:
[root@localhost ~]# fuser -mv /dataUSER PID ACCESS COMMAND/data: mysql 4345 F.c.. mysqld不难发现是 mysqld命令在使用该目录,在不知道如何关闭 mysql 的情况下,使用 killall 命令结束进程:
[root@localhost ~]# killall mysqld之后再次挂载便可成功:
[root@localhost ~]# mount -o remount,ro /dev/sdb5通过在 /data 目录下新建文件检验分区是否已经不可写入:
[root@localhost ~]# touch /data/testfile.txttouch: cannottouch `/data/testfile.txt': Read-only file system出现以上信息表明此时/data 目录已经变为只读。2.安装extundelete:exundelete 官方网站http://extundelete.sourceforge.net,在上面下载较慢,我们使用如下下载地址 http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2:
[root@localhost ~]# cd /usr/local/src [root@localhost src]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 [root@localhost src]# tar jxf extundelete-0.2.4.tar.bz2 [root@localhost src]# cd extundelete-0.2.4./configure 过程中需要用到 gcc-c++ 库及 e2fsprogs-devel 库,使用yum 进行安装:
[root@localhost ~]# yum install -y gcc-c++ e2fsprogs-devel库文件安装完成后,./configure , make , makeinstall :
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete [root@localhost extundelete-0.2.4]# make && make install3.使用extundelete恢复文件:
[root@localhost ~]# cd /usr/local/extundelete(1)查看指定分区下文件的删除状态:
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --inode 2File name | Inode number | Deleted status. 2.. 2lost+found 11mysql 49153catalina.out 12 Deleted.catalina.out.swp 12 Deleted.catalina.out.swx 14 Deleted其中,catalina.out是我们误删除的文件,现在其状态为已删除,使用如下命令恢复文件:
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --restore-file catalina.outNOTICE: Extendedattributes are not restored.Loadingfilesystem metadata ... 130 groups loaded.Loading journaldescriptors ... 4735 descriptors loaded.Block 796156 isallocated.Successfullyrestored file catalina.out出现以上信息表示文件恢复成功,恢复后的文件位于当前目录下的RECOVERED_FILES 中:
[root@localhost extundelete]# ls RECOVERED_FILEScatalina.out注:如果想恢复整个分区上的文件,使用如下命令:
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --restore-all4.收尾工作:恢复成功后别只顾着高兴,别忘了误删文件所在的分区仍在只读状态,将其重新挂载为读写状态:
[root@localhost ~]# mount -o remount,rw /dev/sdb5将误删文件移动到原位置:
[root@localhost ~]# mv /usr/local/extundelete/ RECOVERED_FILES/catalina.out /data/最后,吸取教训,做好备份,尽量避免误删除,因为误删后能否恢复谁也不敢肯定,同时,磁盘要做好分区,如果全部都在 / 分区下,想要恢复就难上加难了。 补充:fuser 命令该命令可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点甚至网络端口,并给出程序进程的详细信息。常用参数:-m 指定要查看的分区或挂载点-v 列出详细信息,如进程所属用户,进程相关命令等,如果不使用该参数则只列出 PID-u 列出进程所属用户-k 发送kill -9 信号结束与当前目录或挂载点相关的进程,使用 -signaln 可以指定其他信号量,但-signal 和 -k 同时使用时前者失效假如现在要查看使用 /dev/sdb5 分区的进程,该分区的挂载点为 /data :
[root@localhost ~]# fuser -mv /dev/sd5 //或者 [root@localhost ~]# fuser -mv /data
相关文章推荐
- 使用extundelete恢复linux ext3 ext4文件系统下由 rm -rf 误删除文件
- Linux下使用extundelete恢复ext3误删除数据文件
- 1-2-linux下使用extundelete恢复误删除的文件
- 恢复Linux误删除文件系列之extundelete工具
- extundelete工具恢复Linux删除文件
- ubuntu下使用extundelete恢复使用rm删除的文件
- opensuse 12.3 使用extundelete恢复ext3,ext4文件系统下被rm删除的数据
- extundelete恢复Linux被删除文件
- linux系统误删文件怎么办!使用extundelete恢复数据
- CentOS7使用Extundelete恢复误删除的文件
- CentOS7使用Extundelete恢复误删除的文件
- Linux通过extundelete恢复误操作删除的文件
- linux下extundelete恢复ext4删除的文件
- 运维日记002-extundelete恢复Linux系统误删除的文件
- linux恢复 rm -rf 删除的文件:extundelete
- 使用extundelete恢复被删文件
- linux下文件恢复工具extundelete
- Linux中利用extundelete恢复误删除的数据
- linux下使用extundelete恢复ext3/ext4分区数据
- Linux中利用extundelete恢复误删除的数据