在linux系統下,通過命令「rm -rf」可以將任何資料直接從硬碟刪除,並且沒有任何提示,同時linux下也沒有與windows下**站類似的功能,也就意味著,資料在刪除後通過常 規的手段是無法恢復的,因此使用這個命令要非常慎重。在使用rm命令的時候,比較穩妥的方法是把命令引數放到後面,這樣有乙個提醒的作用。其實還有乙個方 法,那就是將要刪除的東西通過mv命令移動到系統下的/tmp目錄下,然後寫個指令碼定期執行清除操作,這樣做可以在一定程度上降低誤刪除資料的危險性。
其實保證資料安全最好的方法是做好備份,雖然備份不是萬能的,但是沒有備份是萬萬不行的。任何資料恢復工具都有一定侷限性,都不能保證完整地恢復出所有資料,因此,把備份作為核心,把資料恢復工具作為輔助是運維人員必須堅持的乙個準則。
1、extundelete的恢復原理
在介紹使用extundelete進行恢復資料之前,簡單介紹下關於inode的知識。在linux下可以通過「ls -id」命令來檢視某個檔案或者目錄的inode值,例如檢視根目錄的inode值,可以輸入:
由此可知,根目錄的inode值為2。
在利用extundelete恢復檔案時並不依賴特定檔案格式,首先extundelete會通過檔案系統的inode資訊(根目錄的inode一 般為2)來獲得當前檔案系統下所有檔案的資訊,包括存在的和已經刪除的檔案,這些資訊包括檔名和inode。然後利用inode資訊結合日誌去查詢該 inode所在的block位置,包括直接塊、間接塊等資訊。最後利用dd命令將這些資訊備份出來,從而恢復資料檔案。
2、安裝extundelete
extundelete的官方**是 ,其目前的穩定版本是extundelete-0.2.4。在安裝extundelete之前需要安裝e2fsprogs和e2fsprogs-libs兩個依賴包。
e2fsprogs和e2fsprogs-libs安裝非常簡單,這裡不做介紹。但是對ubuntu系統而言需要安裝的依賴包是
執行:#sudo apt-get install e2fslibs-dev
然後安裝extundelete-0.2.4,如下:
# tar jxvf extundelete-0.2.4.tar.bz2
# cd extundelete-0.2.4
# ./configure
# make
# make install
成功安裝extundelete後,會在系統中生成乙個extundelete可執行檔案。extundelete的使用非常簡單,可以通過「extundelete --help」獲得此軟體的使用方法。
下面就是找回被刪除檔案usb_camera.c的過程:
a、檢視檔案系統型別和分割槽
我的檔案系統型別為ext4,extundelete支援的型別為ext3/ext4 ,而ext3grep僅支援ext3檔案系統的恢復。使用者檔案系統在/dev/sdal根檔案系統中,被rm的檔案也在這裡。
b、執行:# extundelete --inode 2 /dev/sda1
其中,--inode 2為查詢當前目錄下的檔案和被rm掉的檔案。先從根目錄查起。
被我刪除的檔案放在/win7files目錄下。
c、# extundelete --inode 1438977 /etv/sda1
win7files的節點號為1438977,--inode1438977就是檢視/win7file目錄下的檔案及被刪除的檔案。依次下去,直到找到usb_camera.c的節點號。執行**如下:#extundelete --inode 2 /dev/sda1(上一步已經執行過該命令)
setup.sh的節點號為1455587,--restore-inode1455587就是恢復這個節點檔案。
e、檢視恢復結果
Linux命令列刪除檔案恢復
在linux下工作的很多人都有過這樣的尷尬經歷,辛辛苦苦寫了很久的 或者文件,乙個不小心就rm掉了,命令列刪除一般不會進入 站,這時候是不是想死的心都有了。先說說活生生的悲劇是怎麼發生的。先是認認真真寫了乙個下午指令碼setup.sh,在corev1.1中有乙個舊版本但是同名的setup.sh,於是...
Linux拷貝U盤檔案(命令列)
linux系統有的有介面,有的沒有只要命令視窗,因此匯入外部檔案就變得困難,沒有視覺化的方便。這裡通過掛載u盤進行檔案拷貝。首先掛載u盤 這裡以centos為例 1 進入命令列模式下,輸入命令 sudo i,獲取root許可權。2 mkdir usb 建立乙個目錄,用於掛載u盤 3 fdisk l ...
linux命令列掛載U盤拷貝檔案
建立乙個資料夾 mkdir mnt usb 掛載u盤掛u盤之前,執行命令cat proc partitions,看看現在系統中有哪些分割槽。插上u盤以後,再次執行上述命令,看看多出來什麼分割槽 通常是sda1,ps由於偶是在虛擬機器下裝的,所以是sdb1 1 插入u盤 2 輸入fdisk l dev...