要するに:ファイルを書き込むときにハッシュを記録し、あとで照合します。ハッシュが違っていて、誰もファイルを編集していないなら、知らないうちにバイトが変わっています。
これを見つけられるものはほかにありません。サイレントな破損があるディスクでも、First Aid に合格し、SMART は正常と報告し、問題なくマウントされます。
ストレージは物理的なものです。回転するディスクの磁区は弱まります。フラッシュメモリのセルからは電荷が漏れ、温かいと速く、長期間電源なしで置かれるとさらに速くなります。ケーブルは転送中にビットを落とすことがあります。ファームウェアにはバグがあります。
ドライブはこうした問題の多くを、誤り訂正符号や、劣化しつつあるセクタの再配置によって自分で修正します。問題になる破損は、それをすり抜けたものです。書き込んだものと違うバイトを返し、しかも成功を報告する読み取りです。
呼び名については議論があります。ビット腐敗と呼ぶ人もいれば、サイレントデータ破損、データ劣化と呼ぶ人もいます。ここではどれも同じことです。ファイルが変わっていて、何もそれを知らせなかったということです。
ここは理解しておく価値があります。手を伸ばしたくなるツールがどれも見当違いである理由が分かるからです。
cp も Finder もバイトを読んでバイトを書くだけです。読み取りで間違ったバイトが返れば、その間違ったバイトを忠実に書き込みます。つまり正直に言えば、あなたの Mac にはそれを知らせる仕組みがありません。最初の症状は、帯状にノイズが入った写真、開けないアーカイブ、途中で止まる動画です。
ファイル 1 つあたりではまれですが、大量のファイルを長期間持てばまれではなく、バックアップが対象にするのはまさにそのケースです。可能性を目に見えて高める要因が 2 つあります。
作業用ディスクよりバックアップで重要になる理由は、作業用のファイルは開かれ、開かれた破損ファイルは発見された破損だからです。バックアップは一度書き込まれて読まれることがなく、つまりバックアップ内の破損は、バックアップが必要になったその日に発見されます。
書き込んだ内容を記録します。
cd /Volumes/Backup
find . -type f -exec shasum -a 256 {} \; > ~/backup-hashes.txt
そして数か月後、まだ同じかどうかを確かめます。
cd /Volumes/Backup
shasum -a 256 -c ~/backup-hashes.txt | grep -v ': OK$'
表示されたものは、バイトが変わったファイルです。編集した覚えがなければ、それが答えです。
実用上の注意が 2 つあります。ハッシュファイルは対象のドライブ以外の場所に保管してください。そうしないと両方を一緒に失います。また、ドライブ全体を読むのと同じだけ時間がかかるので、夜間に実行するようにしてください。
上のことすべてが、このアプリが今の形で存在する理由です。バックアップの各ピースを中身のハッシュで保存し、スケジュールに沿ってバックアップを読み戻して、各ピースを保存時のハッシュと照合します。
したがって不一致は証拠です。そのバイトは書き込まれたバイトではなく、それで問題ないと解釈する余地はありません。バックアップの下で削除されたピースは欠落として報告されます。そしてメイン画面のスコアは最近検証されたものだけを数えます。だからこそ予想より低く出ますが、それが狙いです。
2 つ目の保存場所があることは、このサイトのほかのどこよりもここで重要です。コピーが 2 つあれば 1 つの破損は不便で済みますが、1 つしかなければファイルの終わりです。
いいえ。First Aid が確認するのはファイルシステムの構造で、ファイルの中身ではありません。黙って破損したファイルがあるドライブでもきれいに合格します。まさにそれがこの問題の厄介なところです。
この目的には役立ちません。SMARTが報告するのは、ドライブが検出して修正または再配置したエラーです。サイレント破損は、ドライブが検出しなかった種類のものです。ただし、故障しかけているドライブのチェックには役立ちます。それは別の、より目に見える問題です。
APFS は自身のメタデータのチェックサムを取りますが、ファイルデータは対象外です。ZFS と Btrfs はファイルの中身のチェックサムを取り、冗長なコピーから修復できますが、どちらも通常の macOS の起動ボリュームや外部ボリュームとしては使えません。アプリケーションレベルの確認を持つ価値があるのは、この隙間があるからです。
良いコピーがまだあるうちに悪いコピーを見つけられる程度の頻度で。アーカイブなら四半期ごとが妥当で、かけがえのないものの唯一のコピーなら毎月です。正しい答えは、実際に飛ばさずに続けられる頻度で、それは自動化すべきだということを意味します。
いいえ。検証で分かるのはコピーが壊れたことです。ファイルを取り戻すことはできません。検出が役立つのは、復元元になる 2 つ目のコピーがあるときだけで、それこそが 3-2-1 ルールの論拠のすべてです。
関連:バックアップが読めるか確認する方法、リポジトリ形式、3-2-1 ルール。