Linux恢复误删除的文件或者目录(文件系统为ext4之类)-----------------------extundelete工具恢复:
Linux恢复误删除的文件或者目录
注意:它的根文件系统是ext4文件系统
像centos6,redhat6操作系统,一般默认ext4
对于误删文件还原可以分为两种情况:
1.一种是删除以后在进程存在删除信息
2.一种是删除以后进程都找不到,只有借助于工具还原。
误删除文件进程还在的情况::
一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧存在。这也是有些服务器删除一些文件但是磁盘不释放的原因。
执行删除操作:
- lsof查看删除的文件进程是否还存在,利用未消失文件进程进行恢复被删除的文件
恢复cp /proc/pid/fd/1 /指定目录/文件名
进入 进程目录,一般是进入/proc/pid/fd/,针对当前情况:
恢复操作:
恢复完成!!!!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
进程被杀死:
这种情况一般是没有守护进行或者后台进程对其持续输入,所以删除就真的删除了。lsof
也看不到,故需要采用工具进行恢复。
现在开始进行误删除文件的恢复。
我们采用的工具是extundelete第三方工具。恢复步骤以及注意事项如下:
- 停止对当前分区做任何操作,防止inode被覆盖。inode被覆盖基本就告别恢复了。
- 夸张一点讲,比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。
- 通过dd命令对 当前分区进行备份,防止第三方软件恢复失败导致数据丢失。
- 适合数据非常重要的情况,这里是例子,所以就没有备份,如备份可以考虑如下方式:
dd if=/path/filename of=/dev/vdc1
- 通过umount命令,对当前设备分区卸载。或者fuser 命令
umount /dev/vdb1
- 如果提示设备busy,可以用fuser命令强制卸载:fuser -m -v -i -k ./
- 下载第三方工具extundelete安装,搜索误删除的文件进行还原
extundelete工具安装
extundelete下载地址:http://extundelete.sourceforge.net/
wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
yum -y install bzip2
yum -y install gcc-c++
yum -y install e2fsprogs e2fsprogs-devel
[root@source extundelete-0.2.4]# ./configure
Configuring extundelete 0.2.4
Writing generated files to disk
make && make install
extundelete安装完成.
执行删除操作::
使用for循环准备数据
for i in `seq -w 1 100`;do echo 123 >$i.log;done
[root@source file]# ls
001.log 009.log 017.log 025.log 033.log 041.log 049.log 057.log 065.log 073.log 081.log 089.log 097.log
002.log 010.log 018.log 026.log 034.log 042.log 050.log 058.log 066.log 074.log 082.log 090.log 098.log
003.log 011.log 019.log 027.log 035.log 043.log 051.log 059.log 067.log 075.log 083.log 091.log 099.log
004.log 012.log 020.log 028.log 036.log 044.log 052.log 060.log 068.log 076.log 084.log 092.log 100.log
005.log 013.log 021.log 029.log 037.log 045.log 053.log 061.log 069.log 077.log 085.log 093.log
006.log 014.log 022.log 030.log 038.log 046.log 054.log 062.log 070.log 078.log 086.log 094.log
007.log 015.log 023.log 031.log 039.log 047.log 055.log 063.log 071.log 079.log 087.log 095.log
008.log 016.log 024.log 032.log 040.log 048.log 056.log 064.log 072.log 080.log 088.log 096.log
[root@source file]# cat 100.log 001.log
123
123
echo abcdefg > deletefile.txt
echo abcdefg > deletefile.txt
umount我们的挂载盘
文件恢复成功!!
命令使用:
extundelete /dev/sdb1 --restore-file passwd
184 extundelete /dev/sdb1 --restore-file 099.log
190 extundelete /dev/sdb1 --restore-directory test
192 extundelete /dev/sdb1 --restore-all