ps: 紅字字體爲重要部分, 仔細看node
當意識到誤刪除文件後,切忌千萬不要再頻繁寫入了,不然你的數據恢復的數量將會不多。 而咱們要作的是,第一時間把服務器上的服務所有停掉,直接killall 進程名 或者 kill -9 pid 。 而後把誤刪除文件所在分區,從新掛載成ro,只讀的 (mount -o ro /dev/sdb2 /data/)。bash
1、 利用系統工具debugfs恢復誤刪除文件服務器
1. 首先建立一個目錄及文件;app
[root@Centos1 ~]# mkdir ceshi [root@Centos1 ~]# echo 111 > ceshi/1.txt
2. 刪除ceshi目錄下的全部文件;ide
[root@Centos1 ~]# rm -rf ceshi/*
3. 利用系統自帶還原工具debugfs來修復;工具
[root@Centos1 ~]# debugfs debugfs 1.41.12 (17-May-2010) debugfs: open /dev/mapper/VolGroup-lv_root
4. 用ls -d參數顯示剛剛刪除文件的所在目錄;字體
debugfs: ls -d /root/ceshi/ 144661 (12) . 128522 (4084) .. <128531> (4072) 1.txt
5. 顯示<>尖括號的就是咱們要找的文件inode號;spa
debugfs: logdump -i <131458>
6. 執行完後, 顯示了一屏信息, 咱們須要的是這一行, 而且記住後面的值(即標註紅色部分);.net
Blocks: (0+1): 127754 (2+1): 1768711539 (3+1): 7894382 (TIND): 1953724787
7. 退出debugfs, 執行如下命令;debug
debugfs: q [root@Centos1 ~]# dd if=/dev/mapper/VolGroup-lv_root of=/root/ceshi/1.txt.bak bs=4096 count=1 skip=30 # if=輸入的設備 # of=輸出的社保 # bs=指定一個block的大小 # count=多少個block須要dump # skip= Blocks: (0+1):後的值
8. 查看/root/ceshi/目錄下是否生成1.txt.bak文件;
[root@Centos1 ~]# cat /root/ceshi/1.txt.bak 111
2、利用extundelete恢復誤刪文件
1. 利用yum安裝依賴包;
[root@Centos1 ~]# yum -y install e2fsprogs* [root@Centos1 ~]# yum -y install gcc* #extundelete編譯時須要gcc環境
2. 下載並安裝extundelete;
[root@Centos1 ~]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
3. 解包、配置、編譯及安裝;
[root@Centos1 ~]# tar -jxvf extundelete-0.2.4.tar.bz2 [root@Centos1 ~]# cd extundelete-0.2.4 [root@Centos1 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete [root@Centos1 extundelete-0.2.4]# make && make install
4. 檢驗是否安裝成功;
[root@Centos1 extundelete-0.2.4]# cd /usr/local/extundelete/bin [root@Centos1 bin]# ./extundelete -v extundelete version 0.2.4 libext2fs version 1.41.12 Processor is little endian.
5. 掃描LVM分區誤刪的文件;
[root@Centos1 bin]# /usr/local/extundelete/bin/extundelete /dev/mapper/VolGroup-lv_root --inode 2
6. 恢復aaa.txt文件;
[root@Centos1 bin]# /usr/local/extundelete/bin/extundelete --restore-file aaaa.txt /dev/mapper/VolGroup-lv_root [root@Centos1 bin]# /usr/local/extundelete/bin/extundelete --restore-all /dev/sdb2 #恢復分區
7. 查看恢復文件;
[root@Centos1 bin]# ls -l RECOVERED_FILES/ 恢復後的文件也是在 ./RECOVERED_FILES/ 下,可否恢復就看你的運氣好很差了。