tft每日頭條

 > 科技

 > 在linux中rm命令的功能與格式

在linux中rm命令的功能與格式

科技 更新时间:2024-09-08 21:14:34

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)1

導讀

在日常的運維工作中,大部分OP都習慣性的經常rm -rf 命令用于文件目錄的删除,通過命令“rm -rf”可以将任何數據直接從硬盤删除,并且沒有任何提示,同時Linux下也沒有與Windows下回收站類似的功能,也就意味着,數據在删除後通過常規的手段是無法恢複的。所以當出現誤操作時,很難快速的找回被删除的文件。

數據恢複工作選擇

在Linux下,基于開源的數據恢複工具有很多,常見的有debugfs、R-Linux、ext3grep、extundelete等,比較常用的有ext3grep和extundelete,這兩個工具的恢複原理基本一樣,隻是extundelete功能更加強大,本文重點介紹extundelete的使用。

數據恢複原理

首先我們稍微複習一下計算機基礎知識:

硬盤

硬盤是一種采用磁介質的數據存儲設備,數據『物理意義上的』存儲在若幹個磁盤片上。在磁盤片的每一面上,以轉動軸為軸心、以一定的磁密度為間隔的若幹個同心圓就被劃分成磁道(track),每個磁道又被劃分為若幹個扇區(sector)。

主引導扇區和分區表

硬盤的0磁道0柱面1扇區是主引導扇區位,包括硬盤主引導記錄MBR(Main Boot Record)和分區表DPT(Disk Partition Table)。操作系統通過分區表把硬盤劃分為若幹個分區,然後再在每個分區裡面創建文件系統,寫入數據文件。

分區日志

分區日志系統是一個文件系統,用于修複由于計算機關閉不當而導緻的任何不一緻。這種關閉通常是由于電源中斷或軟件問題造成的。即記錄了分區的數據讀寫操作。通過這些日志,可以知道分區中的曆史操作。

數據存儲

具體的數據存儲原理内容比較多,這裡不做過多的概述。為了便于理解,可在此理解為:

操作系統中的文件在硬盤的表現形式是在硬盤一片數據區域記錄二進制信息,并由操作系統的一個指針指向該物理地址

而操作系統級别的『删除文件』,即删除這個『指針』

原來的物理地址内沒有『指針』指向後,相當于被釋放,當操作系統需要時,可以被複寫上新的數據。

由此得知,extundelete 通過查閱分區日志,找到被删除的指針,告訴用戶,可以嘗試恢複哪些數據。但由于操作系統随時可以複寫空餘磁盤,所以如果要恢複的物理地址已經被改寫,數據将無法找回。

解決方案演示

演示環境:

操作系統: CentOS 6

需要恢複的文件: /mnt/data1/tmpdir/testDelete/test.log

1.創建文件

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)2

向test.log文件中寫入内容

2.删除文件

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)3

删除test.log文件

3.安裝 extundelete文件恢複工具

執行命令: yum install extundelete -y

4.查詢被删除文件所處磁盤

[root@master-worksvr testDelete]# df /mnt/data1/tmpdir/testDelete Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 142433064 129081532 6116360 96% /mnt/data1

5.卸載磁盤,保護現場

umount /dev/sda3 備注: 不卸載也可以,這樣會導緻磁盤可能會被其他的進程寫入數據,從而抹掉原來的數據,建議卸載

6.獲取磁盤根inode值

磁盤根目錄的inode值,一般情況下為2

[root@master-worksvr testDelete]# ls -id / 2 /

7.查詢可恢複的數據

extundelete /dev/sda3 --inode 2

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)4

從上圖可看出tmpdir 的 inode 是 2883585,繼續根據tmpdir的inode查詢

extundelete /dev/sda3 --inode 2883585

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)5

從上圖可看出testDelete 的 inode 是 2941415,繼續根據testDelete的inode查詢

extundelete /dev/sda3 --inode 2941415

在linux中rm命令的功能與格式(Linux下恢複rm删除的文件)6

最終找到了被删除的文件,也就意味着test.log這個我們之前删除的文件,是可以被恢複出來的。

8.恢複數據

采用extundelete命令恢複數據:

1.恢複單個文件使用參數“--restore-file”,恢複單個目錄使用參數“--restore-directory”,需要使用文件的相對路徑。

2.文件恢複成功後,在執行extundelete命令的當前目錄下會創建一個RECOVERED_FILES目錄,用于存放恢複出來的文件。

實際操作:

[root@master-worksvr ~]# extundelete /dev/sda3 --restore-file /tmpdir/testDelete/test.log NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 1104 groups loaded. Loading journal descriptors ... 32255 descriptors loaded. Successfully restored file /tmpdir/testDelete/test.log [root@master-worksvr ~]# cat ./RECOVERED_FILES/tmpdir/testDelete/test.log TestDelteFile [root@master-worksvr ~]# #若文件無法恢複,則會抛出: No files were undeleted.

extundelete還有其他很強大的功能在此就不演示,下面為extundelte命令相關參數的解釋,可供參考:

命令格式: extundelete [options] [--] device-file 其中,參數(options)有: --version, -[vV],顯示軟件版本号。 --help,顯示軟件幫助信息。 --superblock,顯示超級塊信息。 --journal,顯示日志信息。 --after dtime,時間參數,表示在某段時間之後被删的文件或目錄。 --before dtime,時間參數,表示在某段時間之前被删的文件或目錄。 動作(action)有: --inode ino,顯示節點“ino”的信息。 --block blk,顯示數據塊“blk”的信息。 --restore-inode ino[,ino,...],恢複命令參數,表示恢複節點“ino”的文件,恢複的文件會自動放在當前目錄下的RESTORED_FILES文件夾中,使用節點編号作為擴展名。 --restore-file 'path',恢複命令參數,表示将恢複指定路徑的文件,并把恢複的文件放在當前目錄下的RECOVERED_FILES目錄中。 --restore-files 'path',恢複命令參數,表示将恢複在路徑中已列出的所有文件。 --restore-all,恢複命令參數,表示将嘗試恢複所有目錄和文件。 -j journal,表示從已經命名的文件中讀取擴展日志。 -b blocknumber,表示使用之前備份的超級塊來打開文件系統,一般用于查看現有超級塊是不是當前所要的文件。 -B blocksize,通過指定數據塊大小來打開文件系統,一般用于查看已經知道大小的文件。

注意事項

服務器的數據一定要及時備份或做好容災,防止丢失。希望大家都不要出現這樣的悲劇。

若在實際操作過程有相關問題,歡迎和我一起探讨!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved