Quantcast
Channel: bogamp’s blog
Viewing all articles
Browse latest Browse all 39

par2コマンドで誤り訂正

$
0
0

データの一部が破損しても破損を検出・修復できる、「誤り訂正」という技術がある。有名なものだと、rarのリカバリレコードやQRコードで誤り訂正の技術が使用されている。
par2コマンドを使用すると、任意のファイルに対して、誤り訂正用のリカバリファイルを作成することができる。

1. インストール

LinuxのほとんどのディストリビューションMacでは、パッケージマネージャでインストールできるはず。
DebianUbuntuなら、
sudo apt install par2

(なお、パッケージ名はDebianUbuntu系では「par2」だが、RHEL系、Arch系、Macなどでは「par2cmdline」となっているらしい)

2. リカバリファイルの作成(基本)

以下では仮に、対象ファイルの名前を「file」としておく。
par2 create file

このコマンドを実行すると、拡張子が「.par2」のファイルがfileと同じディレクトリに作成される(.par2ファイルは複数作成されるが、規定の動作なので心配いらない)

3. リカバリファイルによるファイルの検証、修復

作成したpar2ファイルと、検証・修復対象ファイルを同じディレクトリに置く。ファイル名はもとと同じにしておく。

3.1 検証

par2 verify *.par2

検証対象が元ファイルと同一なら、「All files are correct, repair is not required.」のような結果が出力されるはず。
破損している場合、「Repair is possible.」もしくは「Repair is not possible.」のような結果が出力される。前者の場合は修復が可能。

3.2 修復

par2 repair *.par2

修復可能な場合、これでファイルが修復される。修復後のファイルの名前はもとのファイル名と同じになる。修復前の破損したファイルは「(ファイル名).1」のようなファイル名に変更される。

4. リカバリファイル作成時のオプション

  • -r(数字)で、元データに対するリカバリファイルのサイズを指定できる(単位は%、デフォルトでは5%)。たとえば5%の場合、ファイルのおよそ5%以下までなら破損しても修復できる。10%ならファイルの10%が破損しても修復できる。
par2 create -r10 file
  • -n(数字)で、作成するリカバリファイルの数が指定できる。(「インデックスファイル」は必ず作成されるため、指定した数字+1だけの.par2ファイルが作成されることになる)
par2 create -r10 -n1 file

ちなみに、リカバリファイルを複数に分けるのは、配布するさいに通信量を減らすためである(破損が小さい場合、リカバリファイルをすべて使わなくても修復できるような仕組み)。おそらく帯域幅が非常に狭かった時代に考えられた工夫なので、現代なら特に理由がなければ-n1で問題ないと思う。

参考リンク

https://github.com/Parchive/par2cmdline
https://wiki.archlinux.jp/index.php/Parchive
https://man.archlinux.org/man/par2.1.en

Viewing all articles
Browse latest Browse all 39

Trending Articles