如何使用lsof恢復誤刪除的檔案

2021-06-02 16:29:03 字數 955 閱讀 8043

檔案實際上是乙個指向inode的鏈結, inode鏈結包含了檔案的所有屬性, 比如許可權和所有者, 資料塊位址(檔案儲存在磁碟的這些資料塊中). 當你刪除(rm)乙個檔案, 實際刪除了指向inode的鏈結, 並沒有刪除inode的內容. 程序可能還在使用. 只有當inode的所有鏈結完全移去, 然後這些資料塊將可以寫入新的資料.

proc檔案系統可以協助我們恢復資料. 每乙個系統上的程序在/proc都有乙個目錄和自己的名字: 裡面包含了乙個fd(檔案描述符)子目錄(程序需要開啟檔案的所有鏈結). 如果從檔案系統中刪除乙個檔案, 此處還有乙個inode的引用:

/proc/程序號/fd/檔案描述符

接下來, 你需要知道開啟檔案的程序號(pid)和檔案描述符(fd). 這些都可以通過lsof工具方便獲得, lsof的意思是」list open files, 列出(程序)開啟的檔案」. 然後你將可以從/proc拷貝出需要恢復的資料.

首先, 我們需要建立乙個文字檔案, 刪除然後恢復:

vim lsof.txt

less lsof.txt     檢視,然後使用ctrl + z 退出less命令.

rm lsof.txt

ls -l lsof.txt    ///bin/ls: lsof.txt: no such file or directory

lsof | grep lsof.txt

less      11462    user_00    4r      reg        8,4        12     33121 /data/qqshowtestcode/md/lsof/lsof.txt (deleted)

less為程序中使用的命令名,11462為程序號,4r表示檔案描述符為4,r代表普通檔案.

現在我們應該知道11462程序仍有開啟檔案, 檔案描述符是4. 那我們開始從/proc裡面拷貝出資料.  

cp   /proc/11462/fd/4    newfile.txt

ORACLEFLASHBACK 恢復誤刪除資料

啟動錶行移動功能 alter table ds.zw file enable row movement 按時間閃回表 flashback table ds.zw file to timestamp to date 201412011100 yyyymmddhh24mi 啟動資料庫閃回功能 alter...

誤刪除恢復 (extundelete)

了解誤刪除恢復原理 檔案系統構成 檔名,inode,block file inode block 檔名 存放檔案資訊 真正存放資料 對於系統,檔名是inode號碼便於識別的別稱或綽號。inode,存放檔案檔案建立者,大小,建立日期。ls i file 檢視inode號 stat file 檢視檔案詳...

PLsql oracle 誤刪除 恢復

在我們實際工作中,誤刪除或者修改oracle資料庫中的資料,怎麼辦呢?這裡給大家分享一種解決辦法。假如你誤操作的時間不超過30分鐘 資料庫預設的回滾保持段裡的資料時間,可以在pl sql執行視窗按ctrl e檢視你最近的操作 就是可以使用以下方法恢復資料。1.樣例表test 171205 資料如下圖...