有時,我們不得不面對不小心誤刪重要檔案,受到電腦病毒感染無法開啟資料、格式化後沒有備份檔案、檔案毀損 無法開啟等問題。當出現這些問題時,您是如何做檔案修復呢?
檔案是存在在硬碟等儲存裝置中的,當這些儲存裝置發生故障時,可能會遺失部分資料,甚至可能它上邊的全部資料都會丟失。
資料無法檢視大部分是因為:
●硬碟無法正確被引導:因物理故障或邏輯壞軌、引導磁區故障,造成其無法正常開啟檔案,甚至嚴重的會導致電腦系統不能完成正常的自動檢測過程。
●檔案遺失:因人為破壞、誤刪等,造成資料檔案遺失。
●無法正常開啟檔案:因病毒感染、駭客入侵造成的檔頭損毀等情形,使檔案無法正常開啟。甚至找不到該檔案。比如mat或fat損壞,mtf紀錄檔案所有的資訊,例如檔案的大小、建立時間和訪問許可權。fat與mtf性質類似,是包含在fat檔案系統中,主要是告訴作業系統檔案的儲存位置。因此,fat或是mtf損毀將導致系統無法從ntfs或fat分割槽中讀取資料。
●硬碟等儲存裝置出現壞扇區:硬碟等儲存裝置可能存在壞扇區,壞扇區是無法被讀取或寫入。分割槽資訊,像是檔案系統是儲存在特定位置的,如果該位置包含有壞扇區,則作業系統將無法從中讀取資料,使用者就會收到「檔案或目錄損毀而且無法讀取」的錯誤訊息。
●其他:使用者操作錯誤,比如誤刪、誤格式化、熱插拔、不正確斷電、潮濕或電腦過熱等。都可能發生檔案的遺失和錯誤。
既然檔案損壞或丟失無法避免,我們就應該想辦法盡可能的搶救這些檔案。很多使用者並沒有資料搶救的概念,認為磁碟上的資料一旦遺失或毀損就永遠無法找回。但其實不是,諸如永久刪除、格式化、raw的檔案系統、磁碟壞道、病毒破壞造成的資料遺失和損壞。大多只是發生在「讀取」層面,資料本身是完好的。此時如果放棄對丟失或損毀的檔案進行救援,那麼我們與該檔案就將失之交臂。但是若能及時救援,資料自然就會失而復得。
對於硬碟來說,當您在電腦上儲存或生成資料時,它們實際上是儲存在連線到電腦硬碟的磁軌(track)上的。磁軌在碟片上呈同心圓分布,讀寫磁頭在碟片的表面上移動,訪問硬碟的各個區域,因此,可以解釋為什麼檔案是隨機分布到磁片的各個位置上的。存放在磁片上的資料以集群(cluster)為分配單位,集群的大小會因檔案系統、型別而有所不同。但是集群的最少單位為 4kb,因此這也解釋了為何我們即使儲存 1kb 的檔案也會占用 4kb 的磁碟空間。
在windows 系統中使用最多的是 fat32 和 ntfs 檔案系統。他們的基本原理是相同的,都利用乙個類似目錄的結構來引導和組織檔案,作業系統從磁碟目錄區讀取檔案資訊,包括檔名、副檔名、檔案大小、修改日期以及包含指向檔案第乙個集群的指標,第乙個集群的入口又包含指向下一集群位址的指標,依此類推, 直至出現檔案的結束標記為止。
我們在系統上,一旦通過清空**站,shift + delete刪除,dos命令刪除或其他方法永久刪除或損壞、丟失這些檔案,從技術角度來說,檔案系統會將這些檔案的目錄區修改了,作為移除檔案,給新檔案預留可使用的標記,同時給檔案所在的集群位址做空閒的標誌,但實際上檔案實體仍存放在硬碟中,沒有被刪除。直到新檔案寫入該位置。因此,在大多數的情況下,看起來已經刪除、遺失、損壞的資料,只是意味著無法從作業系統中讀取,實際上,這些資料仍存在在他們之前的區域。通過一定的方式,他們是可以被復原的。
當發生檔案刪除、遺失、損壞的問題,請不要慌亂,並且務必注意以下事項:
●不要再對硬碟做任何的寫入操作:因為沒人知道寫入的新資料是否恰好覆蓋遺失資料在碟片上存放的位置。造成資料損毀,有可能再也無法救援遺失的檔案。
●不要進行磁碟重組:因為一旦重組磁碟,檔案在硬碟中存放的位置將會發生變化。重組移動的檔案位置有很大可能覆蓋到部分或全部的被刪除檔案的集群位址。造成檔案無法被救援。
●在資料救援的過程中,搶救回來的資料應當儲存到另乙個硬碟分割區或其他外接儲存裝置上,避免覆蓋自身集群位址或其他尚未救援的資料。
關於如何救援檔案:檔案修復、資料救援:您必須知道的檔案救援方法
必須知道的設計模式
設計模式 design pattern 物件導向 設計模式 引言 設計模式是物件導向思想的集大成,gof在其經典著作中總結了23種設計模式,又可分為 建立型 結構型和行為型3個大類。對於軟體設計者來說,一般的過程就是在熟練掌握語言背景的基礎上,了解類庫的大致框架和常用的函式和介面等,然後多再在百般錘...
必須知道的UML知識
如果你確定兩件物件之間是is a的關係,那麼此時你應該使用繼承 比如菱形 圓形和方形都是形狀的一種,那麼他們都應該從形狀類繼承而不是聚合。如果你確定兩件物件之間是has a的關係,那麼此時你應該使用聚合 比如電腦是由顯示器 cpu 硬碟等組成的,那麼你應該把顯示器 cpu 硬碟這些類聚合成電腦類,而...
關於 SqlParameter 必須知道的!
有時候寫 sqlparameter 對映 new sqlparameter recordid sqldbtype.bigint,0,recordid 有時候發現加不加 都可以,但是今天突然發現,如果不加 相當的能坑人!有些地方不加 是無法通過ado.net的檢查的,可能會報 指定的引數名 recor...