七乐彩往期中奖金额|金七乐奖金查询表

linux下rm刪除與恢復

Fri Sep 27, 2019

100 Words|Read in about 1 Min
Tags: Devops  

最近一個新客戶由于長期沒做備份,再加上客戶與之前的技術合作伙伴之間的一些不愉快。導致客戶的整體linux系統被全部用rm刪除。我們對這種技術人員的職業素養、道德品質和法律素養表示唏噓,客戶已經在第一時間進行了報案和立案工作,犯罪嫌疑人遲早會被繩之以法的。在唏噓感嘆的同時間,我們建議所有的企業第一時間要做好數據定時異地備份,下面介紹linux下的ext4文件系統刪除原理。

警告:若數據塊被覆蓋,則無法恢復,第一時間問清楚是什么時候刪除的數據,叮囑不要繼續再動了!

一、文件刪除原理

在ext3/4文件系統中,inode索引節點除了存放文件屬性還指向文件的block節點,是書的目錄,block存放文件的實際數據,是書的每一頁,文件的上級目錄的block存放的是文件名及其inode節點編號,刪除文件實際上是刪除文件名和inode節點編號的關聯以及inode節點內的指針信息,那么實際上,文件的block還在,加上ext3/4文件系統是日志文件系統,格式化時會分配一個固定大小的空間的日志文件journal,它記錄創建和刪除文件的記錄,當刪除一個文件,操作系統首先把文件inode信息和文件名稱寫入到journal,然后刪除文件并清空inode原始數據指針。

二、有兩種情況無法恢復

1)當新的數據寫入到被刪除文件占用的block后,原來的inode號就指向新的數據,那么這樣是無法找回的。

2)當journal日志文件存滿之后,會釋放前面的空間,循環使用,存放最新的記錄,如果刪除文件的記錄被覆蓋,是恢復不了的。

三、恢復文件的原理

根據journal日志文件殘留inode的信息,定位到相關目錄,恢復殘留inode對應的block。但日志文件恢復只適合小數據量的恢復,因為journal的空間有限,存放不了太多記錄。對于大文件如oracle等數據庫文件恢復采用逆向推算和數據文件本身特點來提取。

簡單說,ext4中文件和目錄包含元數據和實際數據兩個部分,實際數據存儲了文件的實際內容,元數據存儲了文件的創建修改刪除時間以及實際數據的地址。文件和目錄的元數據由一個inode結構表示。所有的inode存儲在inode數組中,根據序號訪問。

Linux下文件刪除的原理

Linux下控制文件真正被刪除的計數器

Linux是link的數量來控制文件刪除的。只有當一個文件不存在任何link的時候,這個文件才會被刪除。一般來講,每個文件都有兩個link計數器:i_count和i_link

i_count的意義是當前文件使用者(或被調用)的數量 當一個文件被某一個進程引用時,對應的這個值就會增加 i_nlink的意義是介質連接的數量(硬鏈接的數量) 當創建文件的硬鏈接的時候,這個值就會增加 可以理解為i_count是內存引用計數器,i_nlink是硬盤的引用計數器

rm命令原理

對于刪除命令rm而言,實際上就是減少磁盤引用計數i_nlink。

Q:如果一個文件正在被某個進程調用,而用戶卻執行rm把文件刪除了,那么會出現什么結果?當用戶執行rm刪除文件后,再執行ls或其他文件管理命令,無法再找到這個文件了,但是調用這個刪除的文件的進程卻在繼續正常執行,依然能夠從文件中正確的讀取及寫入內容,這又是為什么呢?

A:rm操作只是將文件的i_nlink減少了,如果沒有其它的鏈接i_nlink就為0了。但是由于該文件依然被進程引用,因此,此時文件對應的i_count并不為0,所以執行rm操作,系統并沒有真正的刪除這個文件,只有當i_nlink和i_count都為0的時候,這個文件才會被真正的刪除。也就是說,必須要解除該進程對該文件的調用,才能真正的刪除。

Q:當文件沒有被調用,執行了rm操作之后,還能找回被刪除的文件嗎?

A:rm操作只是將文件的i_nlink減少了,或者說置為0,實際上就是將inode的鏈接刪除了,此時,并沒有刪除文件的實體(block數據塊),此時,如果及時停止機器工作,數據是可以找回的,如果繼續寫入數據,那么新數據可能會被分配到被刪除的數據的block數據塊,文件就被真正的回收了。

See Also

Fri Sep 27, 2019

100 Words|Read in about 1 Min
Tags: Devops  
七乐彩往期中奖金额 江苏7位数 四川快乐12 印尼股票指数 哪种理财方式最好 快乐十分 北京地区股票融资 手里有20万怎么理财 东京热鬼逝绝叫痉挛 内蒙古11选5 极速十一选五 股票涨跌幅 股票上升趋势 一只股票分析论文 什么网站让看黄色片 东方6+1 山西快乐十分