統合された写真ライブラリの破損ファイルをチェックする方法
統合された写真ライブラリをチェックするには、画像データを読み取るデコーダーで全画像をスキャンし、失敗したファイルや警告が出たファイルのレポートを保存した上で、置換や復元を行う前に該当ファイルを手作業で個別に確認します。サムネイルやファイルサイズによる簡易的なチェックでも明らかな問題は見つかりますが、画像全体が読み取り可能であるかどうかまでは確認できません。このワークフローではImageMagickのmagick identifyを使用し、ローカルドライブやマウントされたドライブに保存されたライブラリを対象としています。
破損チェックで「わかること」と「わからないこと」
見慣れた拡張子でファイルサイズに不審な点がなくても、画像データが途中で途切れていたり破損していたりすることがあります。逆に、あるビューアーで問題なく開けるファイルが、別のデコーダーでは警告を発したりエラーになったりすることもあります。スキャンによってわかるのは、あくまで「特定のツールがそのファイルをどのように読み取ったか」であり、すべてのピクセルが視覚的に正しいことや、すべてのアプリケーションが同じように解釈することを保証するものではありません。
ImageMagickのmagick identifyは、画像の特性をレポートし、不完全なファイルや破損したファイルを報告できます。精度の高いチェックを行うには、+pingを使用して完全な読み取りを指定します。ImageMagickのデフォルトであるpingモードは、基本的な識別に必要な情報のみを読み取り、画像全体の読み取りを省略する場合があるためです。また、警告がコマンドの終了ステータスに反映されるよう、-regard-warningsを追加してください。ImageMagick Identify documentation、ImageMagick Basic Usage
結果はトリアージ(選別)として扱ってください。警告が報告されたファイルは確認する価値がありますが、それだけで写真が使い物にならない証拠とは言えません。スキャンで問題が出なかった場合も、それは対象のデコーダーがエラーを出さずに処理を完了したことを意味するだけであり、画像が正しく表示されることや、ファイル形式固有の詳細情報がすべて有効であることを保証するものではありません。
スキャン前にライブラリを準備する
まずは安定したコピーまたはバックアップから始めましょう。ファイルの唯一のコピーに対して直接修復や変換を実行しないでください。一部の復旧処理によってデータが改変される可能性があり、書き込みが中断されると状態がさらに悪化することがあります。統合ライブラリが複数のドライブやフォルダーにまたがっている場合は、対象に含めるすべてのルートディレクトリをメモしておきます。
コレクションのアクティブなインポート、編集、または同期を行っているソフトウェアはすべて終了してください。これにより、スキャン中にファイルが変更されるリスクを低減できます。マウントされたドライブが利用可能であり、スキャンを実行するアカウントに読み取り権限があることを確認してください。権限エラーやボリュームの切断は、「問題なし」ではなく「未スキャンの領域」として扱う必要があります。
お使いのOS向けの公式ディストリビューションからImageMagickをインストールし、ターミナルでmagickコマンドが使用可能であることを確認します。まずは正常とわかっているいくつかの画像でテストしてください。ここでのコマンドの構文はバージョン7を対象としており、古いバージョンではコマンド名が異なる場合があります。コマンドが見つからないエラーやサポートされていない形式のエラーを、ファイルが破損している証拠と誤認しないように注意してください。
フルスキャンを実行してレポートを記録する
macOSやLinuxでは、Bashを使用してライブラリを再帰的に巡回し、エラーや警告を個別のログに書き出すことができます。/path/to/photo-libraryとレポートのパスは、実際の環境に合わせて置き換えてください。スキャン処理がレポートファイルを画像として読み込んでしまわないよう、レポートはスキャン対象のライブラリ外に保存してください。
: > "$HOME/photo-scan-errors.log"
find "/path/to/photo-library" -type f -print0 |
while IFS= read -r -d '' file; do
if ! magick identify +ping -regard-warnings "$file" >/dev/null 2>>"$HOME/photo-scan-errors.log"; then
printf '%s\n' "$file"
fi
done
ターミナルにはチェックで失敗が返されたファイルのパスが出力され、ログにはImageMagickからの診断メッセージが記録されます。このループはすべてのファイルを対象とするため、画像以外のファイルも非対応形式として報告される可能性があります。ライブラリ内にサイドカーファイルやドキュメントなどの画像以外のコンテンツが含まれている場合、これは想定どおりの動作です。混在したアーカイブの場合は、「未対応の形式」とデコーダーエラーを分けて考え、必要に応じてスキャン対象を既知の画像拡張子に絞り込んでください。ただし拡張子によるフィルタリングを行うと、通常とは異なる拡張子や拡張子のない画像を見落とす可能性があります。
ログが空でパスも出力されなかった場合、今回のデコーダーによるチェックでは診断メッセージもエラーも発生しなかったことを意味します。ルートパスが正しかったか、またスキャンが最後まで完了したかを確認してください。入力ミス、アクセスできないドライブ、またはコマンドの中断によって生じた空のレポートは、合格を意味するものではありません。非常に大規模なライブラリの場合は、フォルダーやドライブごとに分割して実行し、実際にどこまでカバーされたかがわかるよう各レポートにラベルを付けてください。
フラグが付けられたファイルを安全に確認する
出力されたパスをもとにオリジナルファイルを特定し、そのファイルに対してのみチェックを実行してより詳細な診断情報を取得します:magick identify +ping -regard-warnings "/full/path/to/file.jpg"。出力されたメッセージを記録し、別のビューアーや画像編集ソフトで開いた際の挙動と比較してください。画像が全体まで表示されるか、一部のみか、あるいは全く表示されないかを確認します。メインの画像データが破損していても、アプリケーションによっては埋め込みプレビューを表示できてしまう場合がある点に注意してください。
メモを取る際は、次の3つのケースに分類してください。「デコードに失敗するファイル」「警告付きでデコードされるファイル」「デコードはできるが予期せず途切れていたり視覚的な破損が見られるファイル」。このように分類することで、すべての警告を一律に扱うよりも有益な事後対応が可能になります。GIFやTIFFなどのマルチフレーム形式では、1つのファイルに複数の画像が含まれる場合があります。最初のフレーム以降で問題が発生している場合は、該当するフレームやページを確認してください。
元データを上書きせずに復旧方法を選択する
別のコピーが存在する場合は、修復を試みる前に比較してください。ファイルハッシュを照合すれば、2つのコピーの内容が完全に一致しているかどうかがわかります。Microsoftのドキュメントによると、ハッシュ値が一致していればファイル内容が同一であることが証明され、ファイル名や拡張子の違いはハッシュ値に影響しません。たとえば、PowerShellのGet-FileHashはデフォルトでSHA-256を使用します。Microsoft Learn: Get-FileHash
ハッシュの一致は2つのコピーがバイト単位で同一であることを示しますが、どちらのコピーも破損していないことを証明するものではありません。両方のコピーで同じエラーが発生する場合は、別のバックアップやオリジナルのソースを探してください。一方が合格しもう一方が不合格となった場合は、正常なコピーを保持し、両者が意図した同一の写真であることを確認した上で破損したコピーを置き換えます。置き換えたファイルの確認が完了するまでは、フラグが付けられた元のファイルを残しておいてください。
正常なコピーが入手できない場合は、形式固有の修復ツールを試す前に、フラグが付けられたファイルの複製を別途作成してください。復元されたデータは最初から再チェックし、ビューアーで開いて解像度やその他の期待される特性を比較します。ExifToolは画像検証ツールとして設計されたものではないと説明されています。同ツールの-validateオプションによるチェックは主にJPEGやTIFF向けの追加チェックを提供するものであるため、普遍的な合否判定テストとしてではなく、補助的な診断として利用してください。ExifTool FAQ: Can ExifTool be used as an image validator?
網羅性を確認し、役立つ記録を残す
監査を完了とする前に、対象とするすべてのフォルダーが含まれていたか、スキャンが最後まで完了したか、そしてレポートが保存されたかを確認してください。ドライブの読み取り不可、アクセス権の問題、サポートされていない形式、またはデコーダーの不足を示すメッセージは、確認済みの画像読み取りエラーとは区別して精査します。復元したファイルに対してチェックを再実行し、フラグが付けられた項目やマルチフレームファイルには特に注意を払いながら、画像ビューアーでコレクションをサンプリング確認してください。
スキャン実施日、ImageMagickのバージョン、スキャン対象フォルダー、およびエラーログを保守メモとともに保管しておきましょう。この記録を残しておくことで、将来のスキャンとの比較が可能になり、過去の警告と新たな読み取り問題を区別するのに役立ちます。入念なチェックとは、完全なデコーダー読み取り、的を絞った目視確認、そして置き換えたコピーの検証を組み合わせることであり、単一のコマンドだけでそれらの判断を代行することはできません。
