修復檔使用需知

出自 snowiki
前往: 導覽搜尋

簡介

修復檔製作軟體主要分為ICE ECC以及Par2兩種,其中ICE ECC只於windows平台使用而Par2較常於Linux平台上使用,一來thanatos' blog有詳細的說明且一般我使用Par2居多,因此外掛結構為基百科不多做介紹如何使用ICE ECC來修復檔案,但是依舊會針對手邊ECC檔案使用方式做介紹。 修復檔的製作方針主要是針對項目分卷有遺失的狀況做假定來製作,一般檔案損壞不嚴重的情況下可直接透過rar的修復紀錄來修補損壞的分卷,因此一般情況若項目分卷不多的情況會大多只會製做rar修復紀錄,檔案是否製做修復紀錄可參考項目中的檔名來做初步判定。

Par2修復檔的製作方式

主要分兩種,一種是針對全部分卷製做修復檔,另一種是針對部分分卷來製作修復檔,因為當項目分卷過多的情況下一次針對全部項目製作修輔檔所需的時間過長所以才有兩種製作方式,約略劃分做100分卷為一單位,大於100分卷的項目會約略以100分卷為一個單位製作一組修復檔,以下提供相應的範例做參考。

範例:針對項目全部分卷製作

  • 項目分卷為98卷,修復檔共製作11個分卷,參考修復檔檔名vol之後的字串例如vol06+8可推得每個修復分卷各有8個修復區塊,也就是說在檔案損毀的情況下就算是損毀的區塊過於巨大過於分散也可以透過修復檔修補共80個損壞區塊,若一個分卷會消耗8個修復區塊則可以修復10個遺失的分卷。

par2001.png

範例:針對項目部份分卷製作

  • 項目分卷為213卷,針對項目分卷製作的修復檔共三部分,前兩部份各為15個修復檔,參考修復檔檔名rr3與vol之間的字串例如001-099或是100-199或是200-End可推得若需修復項目的哪一個的分卷必須取得哪一部分的修復檔。參考修復檔檔名vol之後的部分例如vol06+6可推得前兩部分每個修復檔都各有6個修復區塊,而最後一份為兩個修復檔共12個修復區塊。

WarningGraphic.png 項目修復檔最後一部分的修復檔檔名可能會碰到vol之後的字串雖為*-*99的情況但是該項目實際分卷未滿*99的狀況下(例如最多*97)則自動將修復檔最後一部分vol之後的字串訊息的*-*99修正為意指*-*97個分卷,出現這種狀況主要是因為par2計算上無法正確預估造成

par2002.png

Par2檔案的確認方式

在使用par2修復檔前建議先了解並評估par2修復檔是否足以修復手邊的項目分卷,一但推估修復區塊不足以修復整個項目的情況下則需使用修復檔案,以下提供簡單範例參考。

範例一

Question: 項目分卷65卷,每卷各100MB大小,修復檔共3卷皆為165MB且各有兩個修復區塊,請問若有4個分卷遺失,修復檔是否有機會修復全部項目? Anser:

  1. 修復檔每卷有165MB且為2個修復區塊,故每個修復區塊約為165/2=85.5MB
  2. 項目分卷每卷100MB,故需要100/85.5無條件進入=2個修復區塊才能修復一個項目分卷
  3. 項目分卷共遺失4個分卷故需要4*2=8個修復區塊才能修復遺失的分卷
  4. 修復檔共三卷且每卷為兩個修復區塊因此總共3*2=6個修復區塊,因此不足以修復項目分卷

NoteGraphic.png 有不少人的謬誤為直接將修復分卷大小減去遺失分卷大小來評估修復分卷是否足以修復檔案是錯誤的推估方式,如本範例修復區塊共495MB雖大於遺失分卷大小400MB但仍不足以修復整個項目

範例二

Question: 項目分卷145卷,每卷各100MB大小,修復檔共兩部份,第一部份指向項目分卷001-099分卷共有15個修復分卷,每個修復分卷大小皆為110MB且每卷有6個修復區塊,第二部份指向項目分卷100-145分卷共有7個修復分卷,每個修復分卷大小皆為115MB且每卷有6個修復區塊,若項目分卷001-015遺失且100-106遺失,請問修復檔是否有機會修復全部項目? Anser:

  1. 第一部份的修復分卷每個修復區塊為110/6=18.333MB
  2. 項目分卷大小為100MB,001-099分卷每遺失一個項目分卷需要100/18.333無條件進入=6個分卷來修復
  3. 第一部分的修復區塊共用15*6=90個修復區塊
  4. 第一部分共遺失001-015分卷共15個分卷因此需要15*6=90個修復區塊來修復
  5. 項目分卷001-015遺失剛好需要第一部分全部的修復區塊修補
  6. 第二部份的修復分卷每個修復區塊為115/6=19.166MB
  7. 項目分卷大小為100MB,100-106分卷每遺失一個項目分卷需要100/19.166無條件進入=6個分卷來修復
  8. 第二部分的修復區塊共用7*6=42個修復區塊
  9. 第二部分共遺失100-106分卷共7個分卷因此需要7*6=42個修復區塊來修復
  10. 項目分卷100-106遺失剛好需要第二部分全部的修復區塊修補
  11. 綜合兩部分的修復區塊剛好可以修復全部遺失的項目分卷

NoteGraphic.png 僅管遺失分卷都可以修復但是不幸若碰到其他非遺失的項目分卷有損壞的區塊以致所需的修復區塊大於限有的修復區塊的情況則par2修復檔則無法正常做修復的動作

範例三

什麼都不懂可參考這個流程直接丟索引檔給MultiPar(視窗用戶限定)讓MultiPar來幫忙判別該項目是否可進行檔案修復,若是CLI,在修復區塊不足的情況也會顯示error meassage。

範例四

有一種特殊狀況是修復區塊足夠但是無法修復的狀況,其原因是因為當前的檔案名稱和制作修復檔時的檔案名稱無法符合所以造成所引檔判定所有該項目下的檔案(分卷)全數缺失,此時要自行修改檔案名稱後才可作檔案修復,詳情可參考常見問答 中有關檔名修正部分的範例說明。

修復紀錄與修復檔的使用方式

解壓所有項目前依照正規的流程做處理,一但出現檔案損毀就要了解修復檔案的方式。

rar修復紀錄的使用方式

檔案是否含有修復紀錄按照檔名來做判斷,當然會有謬誤的情況發生但是不常見,多數是因為製作分卷時script用錯造成的,一但複判(也就是正式採取修複動作)出問題就可知道檔案修復紀錄是否真正存在,並且若修復不成功也可判斷rar修復紀錄是否有能力修復損檔案中損毀的區塊。修復的方式一般有兩種,一種是直接在桌面環境開啟rar軟體後直接調用附加的工具來修復,但此種方式在項目中若有多重壞檔的狀況下因為必須全手動修復各個壞檔,因此很浪費時間,我推薦直接調用批次檔來批量修復軟體。以下方式執行前先確定已經安裝適當版本的winrar(for windows)/rar(for linux),版本過舊的情況將會造成解壓失敗或是影響到檔案修復。

方式一:全手動修復(不推薦)

  1. 方式一僅適用於windows作業系統使用
  2. 利用sfv檔案掃描全項目將損壞(crc error)的分卷分堆
  3. 若無檢校檔(副檔名為.sfv/.crc)但具有par2修複檔的情況下
    1. 時間緊急:直接利用rar解壓縮,大多數情況下rar解壓過程中若碰到分卷損毀會有警告訊息,收集警告訊息後可知有哪些分卷有問題,若採取7z壓縮的項目建議採取下面第二種方式。
    2. 時間充裕:直接透過par2掃描,就算是修復區塊不夠用依然可以得知有哪些檔案是損毀的,若修復區塊夠用的情況下就直接修復到底忽略rar修復紀錄也行。par2詳細使用方式參考其他段落的說明
  4. 若無檢校檔(副檔名為.sfv/.crc)但具有ecc修複檔案的情況下:j已經忘記是否也同par2一樣有掃描壞檔並紀錄的功能,有需要的人可以試試看。
  5. 無檢校檔且無修復檔的情況:同2-2的說明收集損毀的分卷
  6. 新建一個暫存的資料夾存放損毀的分卷後按照下圖的方式逐一修復檔案
    rar_repair001.png
    rar_repair002.png
  7. 修復完成的檔案在檔名前方會有fixed.字樣,用更名軟體(Ken Rename等)修掉
  8. 回複到步驟二的流程將檔案完整檢查後即可解壓項目分卷

方式二:全自動修復(推薦)

  1. 前置作業與上述方式一(2-5歩)相同,以下先針對windows平台做說明
  2. 將下面command中密碼字串做適當的替換後將所有內容新增至bat批次檔放置在與損毀分卷同級的資料夾中
    for %%x in (*) do "c:\Program Files\WinRAR\Rar.exe" r -p密碼 "%%x"
    pause

  3. 執行批次檔即可批量修復資料夾中所有的檔案,因為連批次檔本身都會修復一次所以回報的部分中第一個檔案若修復錯誤可以忽略,整個修復過程會回報如下圖。
    rar_repair003.png
  4. 修復完成的檔案在檔名前方會有fixed.字樣,用更名軟體(Ken Rename等)修掉
  5. 回複到步驟二的流程將檔案完整檢查後即可解壓項目分卷
  6. linux平台下原理和批次檔完全相同,直接透過CLI下達以下指令即可
    find . -maxdepth 1 -type f | xargs -I@ rar r -phttp://bdmv.info/snow @ repire/

NoteGraphic.png 若想取得損壞的分卷做測試修復紀錄,可參考壞檔的製作方式來保證上述的工作方式都是正確的

Par2修復檔的使用方式

一組完整的par2修復檔分成兩個部分,一個是修復目錄,一個是核心的修復區塊會分散到數個修復檔之中,尤其是修復目錄的部分最為重要,一但修復時會直接調用修復目錄來處理修復檔,因此修復目錄若有缺損的情況下就算有足夠的修復區塊也無法正常工作。

par2003.png

以項目編號E06為例,ImageProcess.E06.r5d1fin.rr3.par2這個檔案即為修復目錄,一般par2的修復目錄大小很少會有超過2MB的狀況,因此修復目錄可參考整組par2檔案中容量最小檔案且檔名無vol字串存在的判斷,而ImageProcess.E06.r5d1fin.rr3.vol00+6.par2修復檔也可稱做修復區塊,以E06這個項目的par2修復區塊來看總共有24個修復區塊平均座落在4個修復檔中,依照檔名中vol的參數會說明該檔案總共具有幾個修復區塊,但是依照par2的製作方式不同,不一定修復區塊都是平均座落在每個修復檔中,也就是說修復檔的大小不一定都是相同的,而具體修復區塊大小和壞檔大小之間的關係參考上面的分項條目和範例說明。

NoteGraphic.png 修復檔有別修復目錄,就算部分修復檔損毀或是遺失也僅僅只是影響其中修復區塊的總大小,只要修復區塊足夠修復項目分卷就沒有問題,而修復目錄缺損的情況非常嚴重,會導致無法修復整個項目。

Windows平台下

Linux平台下

  • 安裝par2 package,以ubuntu為例,執行apt-get install par2即可安裝完成,其他linux分支像是Fedora等請自行選用適合的軟體安裝par2
  • 使用上與在視窗系統下利用par2修復檔來修復檔案大同小異,利用par2的r參數來開啟索引檔可以自動修復項目分卷。

ECC修復檔的使用方式

  • ECC修復檔只可在windows平台下利用ICE ECC修復分卷
  • 只有UI界面並沒有提供CLI,修復並不會很難,請自行研究或參考thanatos' blog的說明。

Par2修復完成後的檔案變動與確認

檔案修復完畢後可以參考

  1. 檔案檔名
  2. 檔案修改時間

來判斷壞檔和新產生的修復檔互相的關係
如圖範例說明一個修復項目完成後紅色圈選處分卷41.42.45.46的檔案都自動生成另一附檔名為1的新檔,其實這幾個檔案都修復完成後被自動重新命名的原始壞檔,可隨意刪除,參考綠色區域可以double confirm修改日期得知41.42.45.46這四個分卷其實是修復後新產生的健康檔案。如果還有疑慮可以使用檢校軟體各別檢查一次這幾個分卷的CRC值確認是否檔案已經完成修復。
par2004.png