1. 程式人生 > >linux恢復誤刪除文件-extundelete

linux恢復誤刪除文件-extundelete

linux恢復誤刪除文件-extunde

經過本人測試該工具支持ext3和ext4文件系統


當發現某個分區的數據被誤刪除後,要做的第一件事是立刻卸載被誤刪除文件所在的分區,或者重新以只讀方式掛載此分區。

這麽做的原因其實很簡單:刪除一個文件,就是將文件inode節點中的扇區指針清除,同時,釋放這些數據對應的數據塊,而真實的文件還存留在磁盤分區中。但是這些被刪除的文件不一定會一直存留在磁盤中,當這些釋放的數據塊被操作系統重新分配時,那些被刪除的數據就會被覆蓋。因此,在數據誤刪除後,馬上卸載文件所在分區可以降低數據塊中數據被覆蓋的風險,進而提高成功恢復數據的機率。


1. 創建文件系統
[root@zw_test_26_74 /]# mkfs -t ext4 /dev/sdb3


2.查看文件系統類型
[root@zw_test_26_74 /]# blkid /dev/sdb3 --查看文件系統類型
/dev/sdb3: UUID="b786e8d1-e8ac-4681-ad3a-ff7a39c07146" TYPE="ext4"

也可以用下面方法查看
[root@zw_test_26_74 ~]# file -s /dev/sdb3
/dev/sdb3: Linux rev 1.0 ext4 filesystem data (extents) (huge files)

3.創建一個delete目錄,並掛載到剛創建的文件系統上,並創建文件,然後刪除文件

[root@zw_test_26_74 /]# mkdir delete
[root@zw_test_26_74 /]# mount /dev/sdb3 /delete
[root@zw_test_26_74 /]# cd /delete
[root@zw_test_26_74 delete]# ls
lost+found
[root@zw_test_26_74 delete]# vi zw.txt --添加一些內容
[root@zw_test_26_74 delete]# rm -rf zw.txt

4.下載
extundelete 主頁:http://extundelete.sourceforge.net/
下載地址:http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 --0.2.4版本


[root@zw_test_26_74 /]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

[root@zw_test_26_74 /]# tar -xvf extundelete-0.2.4.tar.bz2

[root@zw_test_26_74 extundelete-0.2.4]# cd /extundelete-0.2.4

[root@zw_test_26_74 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
Configuring extundelete 0.2.4
configure: error: Can't find ext2fs library

這是因為extundelete依賴e2fsprogs。

[root@zw_test_26_74 extundelete-0.2.4]# yum -y install e2fsprogs e2fsprogs-devel

安裝e2fsprogs後再次configure 成功。


[root@zw_test_26_74 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
Making install in src
/usr/bin/install -c 'extundelete' '/usr/local/bin/extundelete'

5.查看工具版本
[root@zw_test_26_74 /]# cd /usr/local/extundelete/bin
[root@zw_test_26_74 bin]# ./extundelete -v
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.

6.卸載分區,註意如果是/ 根目錄的刪了,把磁盤掛載到其他機器做恢復

[root@zw_test_26_74 ~] fuser -k /delete <-- 結束使用某分區的進程樹
[root@www ~]# umount /delete <-- 卸載分區
[root@zw_test_26_74 ~]# umount /dev/sdb3

7.使用extundelete查看分區上存在的文件
extundelete --inode 2 /dev/sdb2
# --inode 為查找某i節點中的內容,使用2則說明為搜索,如果需要進入目錄搜索,只須要指定目錄I節點即可

[root@zw_test_26_74 bin]# extundelete --inode 2 /dev/sdb3
WARNING: Extended attributes are not restored.
Loading filesystem metadata ... 26 groups loaded.
Contents of inode 2:
0000 | ed 41 00 00 00 04 00 00 01 7b c6 56 05 7b c6 56 | .A.......{.V.{.V
0010 | 05 7b c6 56 00 00 00 00 00 00 03 00 02 00 00 00 | .{.V............
0020 | 00 00 00 00 20 00 00 00 e3 10 00 00 00 00 00 00 | .... ...........
0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
Group: 0
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 1024
Access time: 1455848193
Creation time: 1455848197
Modification time: 1455848197
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 3
Blocks count: 2
File flags: 0
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 4323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name | Inode number | Deleted status
Directory block 4323:
. 2
.. 2
lost+found 11
zw.txt 14 Deleted
.zw.txt.swp 13 Deleted
zw.txt~ 12 Deleted


上面標記為deleted的,zw.txt 就是我誤刪的數據


8. 恢復:
root@zw_test_26_74 bin]# extundelete --restore-all /dev/sdb3
WARNING: Extended attributes are not restored.
Loading filesystem metadata ... 26 groups loaded.
Loading journal descriptors ... 47 descriptors loaded.
Writing output to directory RECOVERED_FILES/
Searching for recoverable inodes in directory / ...
1 recoverable inodes found.
Looking through the directory structure for deleted files ...
Restored inode 14 to file RECOVERED_FILES/zw.txt
0 recoverable inodes still lost.
[root@zw_test_26_74 bin]# ll
total 1164
-rwxr-xr-x 1 root root 1187047 Feb 19 10:10 extundelete

drwxr-xr-x 2 root root 4096 Feb 19 11:20 RECOVERED_FILES


[root@zw_test_26_74 bin]# cd RECOVERED_FILES/

[root@zw_test_26_74 RECOVERED_FILES]# ll
total 4
-rw-r--r-- 1 root root 150 Feb 19 11:20 zw.txt

可以看到zw.txt 已經恢復到RECOVERED_FILES 目錄下了。

9.擴展命令:
--restore-inode 12 # --restore-inode 按指定的I節點恢復
--restore-file zw.txt # --restore-file 按指定的文件名恢復
--extundelete --restore-all # --restore-all 是全部恢復 ,默認全將恢復出來的文件放在當前路徑 RECOVERED_FILES/ 目錄下,文件名為 file.I節點號

註意: RECOVERED_FILES目錄生成在當前執行命令的目錄下面啦!


linux恢復誤刪除文件-extundelete