Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Parchiveのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Parchive
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:データ圧縮とアーカイブ]] [[Category:システムリカバリ]] [[en:Parchive]] {{Related articles start}} {{Related|アプリケーション一覧/セキュリティ#ハッシュチェッカー}} {{Related articles end}} Parchive (Parity archive) は PAR2 ファイルを使ってファイルを検証・修復するツールです。様々な種類のファイルで使うことができます。 ==インストール== [[公式リポジトリ]]から {{Pkg|par2cmdline}} パッケージを[[インストール]]してください。インストールすると {{ic|par2}}, {{ic|par2create}}, {{ic|par2verify}}, {{ic|par2repair}} コマンドが使えるようになります。 ==使用方法== {{ic|par2create}} には入力ファイルを指定することができ、特定の数のデータブロックとして解釈されます。データブロックに基づいて {{ic|par2create}} は[[wikipedia:ja:リード・ソロモン符号|リード・ソロモン符号]]によるリカバリブロックを作成します。後から破損したデータブロックをリカバリブロックと交換することで元のデータを修復することができます。ファイルを完全に修復するには破損したデータブロックに応じた数のリカバリブロックが必要です。 例えば、大切なファイルの30パーセント分のリカバリ情報を計算したい場合: $ par2create -r30 <file> 上記のコマンドで Parchive は {{ic|<file>.par2}} インデックスファイルを作成しますが、インデックスファイルは修復するのに必ずしも必要というわけではありません。インデックスファイルに加えて、複数のファイルに分かれたリカバリブロックが作成されます。例えばリカバリブロックの数が592個であれば、以下のようにファイルが作られます: <file>.vol000+001.par2 <file>.vol001+002.par2 <file>.vol003+004.par2 <file>.vol007+008.par2 <file>.vol015+016.par2 <file>.vol031+032.par2 <file>.vol063+064.par2 <file>.vol127+128.par2 <file>.vol255+256.par2 <file>.vol511+081.par2 プラス記号の左の数字はファイルのリカバリブロックのインデックスで、プラス記号の右の数字がファイルに含まれているリカバリブロックの数です。 リンクレベルで整合性チェックが行われなかった初期バージョンでは破損したデータブロックの数に基づいてリカバリファイルを選択することで上記のファイルを使うことができました。ダウンロードしたファイルのデータブロックが43個破損している場合、数字を2進数に変換することで必要なリカバリファイルがすぐにわかります: 32 16 8 4 2 1 43 = 1 0 1 0 1 1 ファイルを修復するには {{ic|*+032.par2}}, {{ic|*+008.par2}}, {{ic|*+002.par2}}, {{ic|*+001.par2}} をダウンロードしてください。 必要なファイルだけをダウンロードすることで帯域幅を節約することができます。リカバリファイルをダウンロードしたら、以下のコマンドでダウンロードしたファイルの修復を行うことが可能です: $ par2repair <file>*.par2 インデックスファイルはなくても Parchive が勝手に処理してくれるため無視してかまいません。データブロックを完全にするために場合によっては {{ic|-N}} パラメータを指定すると良いこともあります。 ==ヒントとテクニック== ===ファイルのバッチ保護=== ファイルの整合性を保証したいが、クライアントにリカバリファイルを配布したくはないという場合もあるでしょう。ヘリウム封入ハードディスクドライブ・瓦記録技術・センチメートル級面密度・伝達損失などが跋扈する時代、ビットが腐る可能性は決して低くありません。出来るかぎり[[バックアッププログラム|データのバックアップ]]を行うべきですが、利用できるストレージの容量が膨大な昨今、ちょっとした保護を加えることは気楽です。{{ic|par2}} ファイルを作成することは、ファイルに対してアプリケーションプログラムを実行したりエラー出力を確認するよりも簡単にデータの整合性を確認してデータをリストすることができます。Bit rot は元のファイルとリカバリファイルのどちらでも発生する可能性があり、それでも元のファイルを修復することが可能です。 結果的には、ひとつのリカバリファイルに全てのリカバリパケットを含めて大丈夫です ({{ic|-n1}} パラメータ)。これによってリカバリデータの量も減ります。重要なのはどの程度冗長性をもたせるかということです。特に小さいファイル (1 MiB 以下) の場合、リカバリデータの量は元のファイルのサイズとあまり相関関係がありません: {| class="wikitable" ! 元のデータ !! 割合 (%) !! リカバリデータ (インデックスを含まない) |- | 184.8 KiB || 5 || 287.8 KiB |- | 184.8 KiB || 100 || 743.1 KiB |- | 3.4 MiB || 5 || 458.8 KiB |- | 3.4 MiB || 30 || 1.5 MiB |- | 3.4 MiB || 100 || 4 MiB |- | 1.7 GiB || 5 || 87.6 MiB |} 5% がリカバリデータとしては合理的なサイズですが、本当に重要なファイルであれば 100% のリカバリデータを確保しても良いでしょう。100% のリカバリデータは間違って元のファイルを削除してしまったとしてもファイルを復元することができます。 ファイルをバッチ保護するスクリプトは以下のようになります: {{Tip|1={{ic|bin/}} フォルダを検索パスに含める必要があります: {{ic|1=$ export PATH=$PATH:$HOME/bin/}}。ホームディレクトリの init ファイルに追加することで永続的に設定することが可能です。}} {{Note|1=マッチしたエントリだけが保護されます。{{ic|$(find $(pwd))}} を使うことで再帰的に実行することも可能です。}} {{hc|$HOME/bin/batchprotect.sh|2=#!/bin/bash while [ ! -z "$1" ] ; do if [ ! -d "$1" ] ; then #entry is not a directory ending=$(echo "$1" {{!}} sed 's/\(.*\)\.\(.*\)$/\2/') #include this block if you want to have 5% recovery data if [ ! -e "$1-5.par2" -a $ending != "par2" -a $ending != "sig" ]; then par2create -n1 -r5 "$1" rm "$1".par2 mv "$1".vol*par2 "$1"-5.par2 fi #include this block if you want to have 100% recovery data if [ ! -e "$1-100.par2" -a $ending != "par2" -a $ending != "sig" ]; then par2create -n1 -r100 "$1" rm "$1".par2 mv "$1".vol*par2 "$1"-100.par2 fi #include this block if you want to check for normal AND cryptographic integrity if [ ! -e "$1.sig" -a $ending != "par2" -a $ending != "sig" ]; then gpg --default-key C0FFEEBEEFC0FFEEBEEFC0FFEEDEADBEEF31415926 --detach-sign --yes "$1" fi fi shift done }} {{ic|batchprotect.sh *}} を実行すればカレントディレクトリに含まれている全てのファイルが Parchive で保護されます。署名によってデータが改竄されていないことが保証されます。また、gpg を使用するためチェックサムのリストを管理する必要はありません。 ===検証=== $ par2verify <file>-5.par2 $ cfv <file>-5.par2 $ gpg --verify <file>.sig 元のファイルのパスを変更した場合: $ par2verify <file>-5.par2 /new/path/to/<fileRenamed> $ gpg --verify <file>.sig /new/path/to/<fileRenamed> {{ic|par2}}/{{ic|sig}} ファイルのパスを変更することもできます。 ===マルチスレッド=== {{Note|This is work in progress. Help is appreciated.}} 残念ながら Parchive はマルチスレッドをサポートしていません。tbb や OpenMP を使うことでマルチスレッド対応版をコンパイルすることができます。[[wikipedia:Parchive|Wikipedia のページ]]を見てください。ファイルのリストをシャッフルして、スクリプトを多重実行するという方法もあります。スクリプトは既に処理したファイルを無視するため、複数のインスタンスを同時に実行しても問題ありません。以下のようにしてください: #!/bin/bash SHUFFILE=$(mktemp -t batchprotect.XXXXXXXXXX) echo "" > $SHUFFILE while [ ! -z "$i" ] ; do echo $i >> $SHUFFILE shift done for i in "$(shuf $SHUFFILE)" ; do ... ただし、ファイル名の空白によって動作に支障をきたす可能性があります。
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Parchive
に戻る。
検索
検索
Parchiveのソースを表示
話題を追加