歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 用lsof恢復誤刪的文件

用lsof恢復誤刪的文件

日期:2017/2/28 17:59:04   编辑:Linux教程

先介紹一些文件的基本概念, 文件實際上是一個指向inode的鏈接, inode鏈接包含了文件的所有屬性, 比如權限和所有者, 數據塊地址(文件存儲在磁盤的這些數據塊中). 當你刪除(rm)一個文件, 實際刪除了指向inode的鏈接, 並沒有刪除inode的內容. 進程可能還在使用. 只有當inode的所有鏈接完全移去, 然後這些數據塊將可以寫入新的數據.

proc文件系統可以協助我們恢復數據. 每一個系統上的進程在/proc都有一個目錄和自己的名字: 裡面包含了一個fd(文件描述符)子目錄(進程需要打開文件的所有鏈接). 如果從文件系統中刪除一個文件, 此處還有一個inode的引用:

/proc/進程號/fd/文件描述符

接下來, 你需要知道打開文件的進程號(pid)和文件描述符(fd). 這些都可以通過lsof工具方便獲得, lsof的意思是”list open files, 列出(進程)打開的文件”. 然後你將可以從/proc拷貝出需要恢復的數據.

下面介紹在Fedora Core 5系統上使用lsof恢復誤刪的文件:

環境

主機: 使用微睦獨立主機, 一台基於vmware的虛擬獨立主機.

系統: Fedora Core 5

內核: 2.6.16-1.2122_FC5

lsof版本:

[zhaoke@fedora5 ~]$ /usr/sbin/lsof -v

lsof version information:

revision: 4.77

預備工作:

如果你的系統沒有安裝lsof, 可以從作者網站或pbone獲得.

作者網站: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/

Pbone: http://rpm.pbone.net/

恢復過程:

首先, 我們需要創建一個文本文件, 刪除然後恢復:

[zhaoke@fedora5 ~]$ man lsof | col -b > myfile

然後看一下文件內容:

[zhaoke@fedora5 ~]$ less myfile

Copyright © Linux教程網 All Rights Reserved