
すべての写真をビット ロット (ハード ドライブまたはネットワーク転送のエラーによりランダムに発生するファイル破損) から保護する必要があることに気付きました。
私は最近、冗長ファイルを作成し、ファイルの破損を検出して修復する機能を提供する優れたプログラムのようである par2 を発見しました。
バックアップ内のファイルや新しいラップトップに移行するときにも保護を継続したいので、ジャーナリング ファイル システムは適切なソリューションではないと思います。
したがって、必要だと思うのは、おそらく 1 時間に 1 回、cronjob として実行できるスクリプトです。保護が必要なすべてのファイルを調べ、ファイルが追加または変更された場合 (ファイルの編集タイムスタンプが冗長アーカイブよりも新しい) は冗長ファイルを更新し、ファイルが破損している場合はファイルを修復します (ファイルは変更されているが、編集タイムスタンプが更新されていない)。
これを実行するスクリプトやプログラムはありますか? または、別の方法で問題を解決するプログラムはありますか? それとも、自分でそのようなスクリプトを書くべきでしょうか (私はそうしたくないのですが、堅牢で多くのユーザーによってテストされたものが欲しいです)?
答え1
標準的な解決策は、チェックサムをサポートするファイルシステムを使用し、定期的にバックアップを行うことです。
さらに、可能であれば、ファイルシステム層で冗長ストレージ スキーム (RAID) を使用して、バックアップからの時間のかかる復元を回避することもできます。
このようなファイルシステムの例としては、ZFSまたはBtrfs。
このようなファイルシステムのチェックサム機能は、暗号化ハッシュ関数を使用して実装されています。そのため、ストレージ スタックの下流のビット エラーは非常に高い確率で検出されます。そのため、破損を検出する機能は、 などのツールと同等かそれ以上ですpar2
。
これらのファイルシステムには、RAID レベルに似た冗長ストレージ機能も含まれています。従来の階層化 RAID アプローチとの違いは、破損が検出された場合、ファイルシステムが「正しい」レッグ、つまり正しいチェックサムを持つブロックを返す RAID ミラーの側を選択できることです。
答え2
これは古い質問ですが、2019 年でもまだ関連性があります。
はい、パリティファイルはビット腐食に対する有効な解決策です
ファイルシステムレベル以外のパリティ チェックにはデメリットもありますが、大きなメリットも 1 つあります。
移植性。
世界で最も高度なファイルシステムベースのエラー チェックにより、理論上はデータを永久にビット腐食のない状態に保つことができますが、保護はそのファイルシステムにロックされます。ファイルがファイルシステムから外れると、すぐに保護されなくなります。
"重すぎる"によるブラップスライセンスはCC BY-NC 2.0 (データを入れる前に、ZFS と屋根に切り替えるべきです)
パリティ ファイルが添付されたイメージは、USB ドライブに移動したり、パケットロスのない接続で転送したり、圧縮したり、他のメディアに個別にバックアップしたり、その他にも思いつく限りのさまざまなことができます。
また、不正なプログラム(たとえば、誤って誤ったメタデータを書き込むメタデータアナライザー)による変更を防ぐこともできます。
PAR2はパリティファイルの現実的な選択肢である
特に PAR2 ファイルはクロスプラットフォームで使用でき、その最大の欠点は、大きな写真を保護するユースケースでは実際には問題になりません (PAR2 はサブフォルダーをサポートしておらず、1KB 未満のファイルを効率的に処理できないという点です)。
PARファイルはそれ自体では完全なバックアップソリューションではありませんが、
特に PAR ファイルには変更履歴がないため、これらを「万全」にするには、3 コピーのバックアップ戦略の一部にする必要があります。変更が有効であると検出され、パリティ ファイルが再作成された場合、別のバックアップを参照せずに元に戻すことはできません (変更履歴が組み込まれたオフサイト バックアップ ソリューションがここでは最適です)。
次のステップ
「[パリティ ファイルを自動的に作成して維持する] スクリプトやプログラムはありますか?」という最初の質問に対する答えは、2019 年でもまだ「いいえ」ですが、スクリプトを自分で作成したり、作成してもらうのはかなり簡単です。この方法を取る場合、私ができる最善のアドバイスは、考えられるすべてのエッジ ケースでテスト環境を作成し、スクリプトを信頼する前にすべてのテストを実行することです。
そして、これを読んでいる人がするこの方法を採用する場合は、全員の利益のためにオープンソース化を検討してください。
編集された補足:PARファイルに使用される技術はhttps://en.wikipedia.org/wiki/リード–ソロモンの誤り訂正PAR の開発は停滞していますが、ファイル レベルのデータ整合性/修復にリード ソロモンを使用しているプロジェクトは数十、場合によっては数百あります。
答え3
私はビットロットを検出する軽量ツールを作成しました。chkbit
。
ファイルシステムから独立してデータを追跡するハッシュを作成します。これにより、chkbit
メイン システム、バックアップ メディア、および復元後のデータの整合性を検証できます。
chkbit ではデータを修復できないため、1 つ以上のバックアップが必要になります。