Linuxt恢復誤刪內容:命令lsof、extundelete工具
不像windows有那麼顯眼的回收站,不是簡單的還原就可以了;linux刪除檔案還原可以分為兩種情況,一種是刪除以後在程式存在刪除資訊,一種是刪除以後程式都找不到,只有藉助於工具還原。 |
這種一般是有活動的程式存在持續標準輸入或輸出,到時檔案被刪除後,程式PID還是存在。這也就是有些伺服器刪除一些檔案但是磁碟不釋放的原因。比如當前舉例說明:
透過一個 終端對一個測試檔案做cat追加操作:
[root@21yunwei_backup ~]# echo "hello py" > testdelete.py [root@21yunwei_backup ~]# cat >> testdelete.py hello delete
另外一個終端檢視這個檔案可以清楚看到內容:
[root@21yunwei_backup ~]# cat testdelete.py hello py hello delete
此時,在當前伺服器刪除檔案rm -f ./testdelete.py
檢視這個目錄,檔案已經不存在了,那麼現在我們將其恢復出來。
1,lsof檢視刪除的檔案程式是否還存在。這裡用到一個 lsof,如沒有安裝請自行yum或者apt-get。類似這種情況,我們可以先lsof檢視刪除的檔案 是否還在:
[root@21yunwei_backup ~]# lsof | grep deleted mysqld 1512 mysql 5u REG 252,3 0 6312397 /tmp/ibzW3Lot (deleted) cat 20464 root 1w REG 252,3 23 1310722 /root/testdelete.py (deleted)
幸運的是這種情況程式還存在 ,那麼開始進行恢復 操作。
2,恢復。
恢復命令:
cp /proc/pid/fd/1 /指定目錄/檔名
進入 程式目錄,一般是進入/proc/pid/fd/,針對當前情況:
[root@21yunwei_backup ~]# cd /proc/20464/fd [root@21yunwei_backup fd]# ll total 0 lrwx------ 1 root root 64 Nov 15 18:12 0 > /dev/pts/1 l-wx------ 1 root root 64 Nov 15 18:12 1 > /root/testdelete.py (deleted) lrwx------ 1 root root 64 Nov 15 18:12 2 > /dev/pts/1
恢復操作:
cp 1 /tmp/testdelete.py
檢視檔案:
[root@21yunwei_backup fd]# cat /tmp/testdelete.py hello py hello delete
恢復完成。
建立準備刪除的目錄並echo一個 帶有內容的檔案:
[root@21yunwei_backup 21yunwei]# tree . ├── deletetest │ └── mail │ └── test.py ├── lost+found └── passwd 3 directories, 2 files [root@21yunwei_backup 21yunwei]# cat /21yunwei/deletetest/mail/test.py hello Dj [root@21yunwei_backup 21yunwei]# tail -2 passwd haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
執行刪除操作:
[root@21yunwei_backup 21yunwei]# rm -rf ./* [root@21yunwei_backup 21yunwei]# ll total 0
現在開始進行誤刪除檔案的恢復。這種情況一般是沒有守護進行或者後臺程式對其持續輸入,所以刪除就刪除 了,lsof也看不到。就要藉助於工具。這裡我們採用的工具是extundelete第三方工具。恢復步驟如下:
1,停止對當前分割槽做任何操作,防止inode被覆蓋。inode被覆蓋基本就告別腳踏車了。比如停止所在分割槽的服務,解除安裝目錄所在的裝置,有必要的情況下都可以斷網。
2,透過dd命令對 當前分割槽進行備份,防止第三方軟體恢復失敗導致資料丟失。適合資料非常重要的情況,這裡測試,就沒有備份,如備份可以考慮如下方式:
dd if=/path/filename of=/dev/vdc1
3,透過umount命令,對當前裝置分割槽解除安裝。或者fuser 命令。
umount /dev/vdb1 或者 umount /21yunwei
如果提示裝置busy,可以用fuser命令強制解除安裝:fuser -m -v -i -k /21yunwei
4,下載第三方工具extundelete安裝,搜尋誤刪除的檔案進行還原。
wget tar jxvf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install
掃描誤刪除的檔案:
[root@21yunwei_backup extundelete-0.2.4]# extundelete --inode 2 /dev/vdb1 NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Group: 0 Contents of inode 2: . .省略N行 File name | Inode number | Deleted status . 2 .. 2 lost+found 11 Deleted deletetest 12 Deleted passwd 14 Deleted
透過掃描發現了我們刪除的資料夾,現在執行恢復操作。
(1)恢復單一檔案passwd
[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-file passwd NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Successfully restored file passwd
恢復檔案是放到了當前目錄RECOVERED_FILES。
檢視恢復的檔案:
[root@21yunwei_backup /]# tail -5 RECOVERED_FILES/passwd mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
(2)恢復目錄deletetest
[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-directory deletetest NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Searching for recoverable inodes in directory deletetest ... 5 recoverable inodes found. Looking through the directory structure for deleted files ... [root@21yunwei_backup /]# cat RECOVERED_FILES/deletetest/mail/test.py hello Dj
(3)恢復所有
[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-all NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. Searching for recoverable inodes in directory / ... 5 recoverable inodes found. Looking through the directory structure for deleted files ... 0 recoverable inodes still lost. [root@21yunwei_backup /]# cd RECOVERED_FILES/ [root@21yunwei_backup RECOVERED_FILES]# tree . ├── deletetest │ └── mail │ └── test.py └── passwd 2 directories, 2 files
(4),恢復指定inode。
[root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-inode 14 NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 8 groups loaded. Loading journal descriptors ... 46 descriptors loaded. [root@21yunwei_backup /]# tail -5 /RECOVERED_FILES/file.14 mysql:x:497:500::/home/mysql:/bin/false nginx:x:496:501::/home/nginx:/sbin/nologin zabbix:x:495:497:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin haproxy:x:500:502::/home/haproxy:/bin/bash tcpdump:x:72:72::/:/sbin/nologin
注意恢復inode的時候,恢復 出來的檔名和之前不一樣,需要單獨進行改名。內容是沒問題的。
更多的extundelete用法請參考extundelete –help選項引數說明,當前恢復所有的操作完成。
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2668193/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- lsof恢復誤刪的檔案
- lsof恢復oracle誤刪除檔案Oracle
- Linux下面誤刪除檔案使用extundelete工具恢復介紹Linuxdelete
- ext3 ext4 格式下 rm 誤刪恢復工具 extundeletedelete
- 使用lsof恢復誤刪除的檔案
- ZT:使用lsof恢復誤刪除的檔案
- Ext分割槽檔案恢復工具extundeletedelete
- extundelete工具恢復rm -rf 刪除的目錄(ext4、ext3)delete
- 磁碟誤刪卷資料恢復工具資料恢復
- Oracle-誤刪資料恢復(短期內)Oracle資料恢復
- extundelete恢復rm的資料delete
- solaris下使用lsof恢復刪除的檔案
- Linux下使用lsof恢復刪除的檔案Linux
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- Oracle恢復誤刪資料Oracle
- mysql誤刪資料恢復MySql資料恢復
- 電腦照片誤刪了怎麼恢復?電腦誤刪檔案照片恢復教程
- SQL Server資料庫恢復,SQL Server資料恢復,SQL Server資料誤刪除恢復工具SQLRescueSQLServer資料庫資料恢復
- eclipse 恢復誤刪檔案Eclipse
- Mac誤刪照片怎麼恢復Mac
- oracle恢復誤刪除資料Oracle
- Sybase SQL Anywhere(ASA)資料庫恢復,ASA資料恢復,資料誤刪除恢復工具ReadASADBSQL資料庫資料恢復
- Oracle閃回刪除恢復誤刪資料Oracle
- 電腦檔案誤刪除了怎麼恢復找回?誤刪電腦資料恢復方法教程資料恢復
- win10系統內建Onedrive誤刪怎麼恢復 win10電腦Onedrive刪除的恢復方法Win10
- Mysql 誤刪資料進行恢復MySql
- MySQL 5.6.26 誤刪ibdata恢復MySql
- Oracle恢復誤操作刪除掉的表Oracle
- Linux恢復誤刪的資料Linux
- mysql 誤刪除表內資料,透過binlog日誌恢復MySql
- CentOS 6.5安裝使用資料恢復軟體extundeleteCentOS資料恢復delete
- Mongodb資料庫誤刪後的恢復MongoDB資料庫
- 如何有效恢復誤刪的HDFS檔案
- 電腦誤刪檔案怎麼恢復?
- 被誤刪的檔案快速恢復方法
- 【Linux】ext3grep 誤刪恢復Linux
- DB2 恢復誤刪除的表DB2
- 閃回查詢恢復誤刪資料