光ディスクやハードディスクに大きいファイルを保存する際、ファイルの一部だけが読み取れないことで全部が使えなくなってしまうことがあります。
シンプルな方法として、ファイルを2つにコピーしてバックアップ(ミラーリング)すれば防げるのですが、それでは使えるストレージの容量が半分になってしまいます。
RAID
サーバーの分野では、RAIDという仕組みが考えられています。いくつかのバージョンがあり、RAID1は先述のミラーリングですが、RAID5ではパリティと呼ばれるデータを生成し、それを使うことでファイルの修復が出来るようになっています。
RAIDはハードディスク全体に適用するものであり、使うためには高価な拡張カードを必要とします。RAIDは一般人に手が届きにくい方式なのですが、この考えを元に作られたソフトがいくつか存在します。
Parchive
ファイルのパリティを生成する規格のひとつで、複数の”.par2″ファイルに分割してパリティを保存できます。もしファイルが無かったり、内容が一部破損していてもパリティが十分な数あれば修復できるというものです。詳しくはArchWikiに書いてあります。
ただのミラーリングと違うのは、容量の節約になるという点です。10%のパリティを生成すれば、どんなファイルでも全体の10%までの損傷を復元できます。ミラーリングであれば200%の容量が必要になりますが、こちらは110%で済むのです。
もちろん、この例だと10%を超える損傷は復元できません。また、5%の空き容量しかストレージに無いかもしれません。
そのような場合のためにParchiveではパリティの比率を0%から100%まで調節できます。
MultiPar
Parchiveは単なる規格なので、それを実装するソフトが必要です。Windows上ではMultiParというソフトでパリティの生成と復元ができます。使い方についてはメイン画面の”情報”から”ヘルプ”を見てもらうとして、分かりやすい画面でファイルの検証などが出来ます。
試しにフォルダ内に10個のファイルを入れパリティを作り、1個のファイルを削除してからパリティを読み込ませたところ、無事に復元できました。
また、全部のファイルをバイナリエディタで4バイトずつ損傷させパリティを読み込ませたところ、こちらも全て復元できました。
圧縮
ただ、圧縮機能はついていないので、圧縮したい場合はあらかじめ7zip等で圧縮したデータのパリティを取るなどを行う必要があります。
その際には、圧縮ファイルの中にパリティは入れないでください。圧縮ファイルが壊れて開けない場合に復元が出来なくなります。
最後に
パリティを生成することで、CD-RやDVD-Rなど劣化しやすいメディアにも安心してデータを保存できます。
MultiParには”空き容量に収める”ボタンがあるので、メディアの容量に合うようにパリティを生成したりしてもいいでしょう。