[電腦應用] 預防檔案及資料毀損的救星:PAR file (QuickPar)

要是檔案有一小部份損壞而不能用了,那真是一件很麻煩的事呢。

一般的電腦檔案,不論存在任何儲存媒體上,都有一定的風險會出問題的。此處講的出問題,不是指整個檔案壞掉,而是指其中一小部份的資料發生了變化,以至於不能再使用。即使只壞掉一個 bit,也可以造成整個檔案變成廢物。

舉個 LH 在好幾年前發生過的案例。當時雖然 SQL server 2005 都已經出了,但是因為有個客戶還要用 SQL 2000,所以 LH 只好翻箱倒櫃的把以前留下來的 SQL 2000 ISO 檔拿出來用。但是很不幸的,那個檔案雖然是存在硬碟上,以為應該是會很安全的被保存著,其實確在某個時候遭到了損壞..... 以至於不論如何安裝,錯誤訊息總是出現在同一個地方。

當初想說存在硬碟上會很安全,但其實是不論存在任何媒體上,都有損壞的風險。所以除非是用 mirror 的方法存,當有問題時他們之間應該會互相修複。但使用 mirror 的架構實在是要花不少錢,也要花些精力去組起來和維護.....

在這,LH 介紹一個比較簡單的做法:將資料用 PAR 格式加上能夠修復的資訊,一起存放著。

一般我們看到的如 parity bit,或只是 CRC 這類東西,都只是針對資料偵錯的能力而以。換句話說,當一筆資料出現問題時,可以用那樣的方法來發現這筆資料已經跟原始的不一樣了。

但是此處要介紹的 PAR 格式,則是能夠將有問題的資料回復的能力。PAR 指的是 Parchive,它當初的構想是資料在網際網路上傳來傳去時可能會發生錯誤,於是就設計了這種 PAR 格式的運算法,將原始的資料經由運算後,建利一份修復檔。所以當資料出現錯誤時,或許就可以靠著修復檔來還原。目前 PAR 的開發是到了第二版,它也有它的一些功能上的限制,比如說它只能對同一個目錄下的檔案加上修復的資訊,無法管到子目錄下的檔案。因為這樣,LH 是建議將那些很散亂的檔案都先壓縮起來,然後才用 PAR 來加上修復的資訊。

LH 在這要介紹的是一套免費的程式叫 QuickPar。這隻程式很小很好用,效率還算不錯,最重要是免費!現在就來看看它的介面跟使用方法吧。


叫出 Quickpar,最基本的使用者介面像這樣。按綠色的 Add Files,可加入檔案來做修復檔的資料運算。按紅色的 Open,可以開起修復檔來做偵錯跟修復的動作。

先按 Add Files 來看看如何製造修復檔吧。


這次拿來示範的對相,是整理好的 6D Magic Lantern 的檔案。因為是分散在不同的目錄下,所以 LH 先把它們全部壓起來成為一個壓縮檔,然後再針對這一個檔來做運算即可。

目前 QuickPar 可以一次對同一個目錄下的多個檔案來運算,但只限該目錄而以。子目錄都沒辦法,或許要等下一代的 PAR 吧。


綠色那個框,是可以調整要製造出多少程度的回復檔。

通常 LH 對於這種硬碟上儲存的檔案,因為可能只會有某些小地方毀損而以,不須要太多的修復資料,所以只用了 3%-5%。比較須要嚴謹一點的檔案,比如說整個系統的備份,可能會用到 5%-10%,就是以防萬一。

如果用個 3%,大約就會製造出原始檔案額外的 3% 大小的回復檔。也就是說,要多花點空間來存那 3% 的檔案。

調整好了之後,就按紅色框的 Create。


由於該檔案很小,所以很快就跑完了。在這理,可以按 Verify 來確定一次檔案都正確;可以按 New 去製造下一批檔案;可以按 Open 去檢查已經製造好的回復檔;當然也可以按 Exit 離開 QuickPar。

在這,我們就按 Open 來檢查這個修復檔是不是正確。


去選副檔名為 par2 的檔來開。


因為檔案很小,所以檢查的速度也很快。全部都為綠色,代表都沒問題,原始檔案沒遭到破壞,回復檔也都存在。

接著,LH 來試一下如果檔案遭到破壞了,這個 PAR 是真的可以回復嗎?因為 LH 懶的去對該壓縮檔做編輯,所以就乾脆把它做 100% 的回復運算,然後把該壓縮檔幹掉,來做回復的動作。

理論上,如果使用 100% 回復的話,那的確是可以完全算出當初的原始檔案。


選擇 100%,然後 Create。


之後把原本那個壓縮檔殺掉,再回到 QuickPar 理來用紅色框 Open 的功能,去開啟剛才那個目錄下的 par2 檔開啟。


由於剛才是把整個壓縮檔都殺掉了,所以 QuickPar 顯示為紅色的 Missing。如果只是有某些地方受損,QuickPar 會顯示為橘黃色的 Damaged。

如果紅色框那個 Auto Repair 有選的話,在每次檢查完如果有問題,QuickPar 就會自動去試著修復。LH 因為是要截圖,所以才沒選。

接著就是按 Repair 去讓 QuickPar 運算一個原始檔出來吧!


左邊是修復前,右邊是修復後。比較一下可以看到,右邊的狀態現在已經為 Repaired,如果去該目錄下看,原本那個壓縮檔已經又神奇的出現了,而且也可以用!

這次對於 QuickPar 的簡單介紹,就到此告一段落吧。LH 最後提供一點心得:
1. 最好是針對二進位檔做運算。如果不確定原始檔是不是二進位檔,那就壓縮一次最保險。
2. 目前第二代的 PAR 只能針對同一個目錄下的檔案做運算,子目錄都沒辦法。簡單的做法,就是把根目錄和子目錄全都壓起來,一起做運算。
3. 回復檔用的越大,所佔用的額外儲存空間也越多哦。如果用到 100%,那就有點像是拿兩顆硬碟來做 mirror 一樣的感覺。


分享


回到 Blogger 的童言童語

沒有留言: