DESIGN / CODE / INFRA / AI

解説

コピーしたファイルは同じ中身?SHA-256で照合する手順

名前や容量だけで判断せず、Macのshasumでコピー前後の内容を比較。小さな実行例と、不一致のときに戻って確認する場所を整理するよ。

コピーしたファイルは同じ中身?SHA-256で照合する手順
保存リストを見る →
この記事の道しるべ 5項目

バックアップへコピーしたファイルが、元と同じ中身か確かめたい。名前や容量が同じでも、それだけでは内容まで一致したとは言い切れないよ。今回はMacのターミナルでSHA-256を計算し、コピーの前後を比べる手順を整理する。

必要なのは、読み取れる元ファイルとコピー先のファイル、それからshasumコマンド。実データを変更する前に、空の練習フォルダーで試そう。Windowsのコマンドプロンプトへ、そのまま入力する手順ではないよ。

SHA-256は中身から計算する値

SHA-256は、データから一定の長さの値を計算するハッシュ関数の一つ。shasumで表示すると64桁の16進数になる。コピーの照合では、二つのファイルを同じ方式で計算し、値全体を比較する。

これは暗号化ではないので、ファイルが読めなくなることも、秘密の内容が保護されることもない。また、値が一致しても、作成者が誰か、ウイルスがないか、必要なファイルが全部あるかまでは分からない。今回確かめるのは、指定した二つのファイルの内容の一致だよ。

空の練習フォルダーでコピーを作る

Finderで新しい空のフォルダーを用意し、ターミナルでそのフォルダーへ移動する。次は、その中に同名ファイルがないことを確認してから実行しよう。最初の行はファイルを作成し、同名のものがあれば上書きする。

printf 'hello\n' > original.txt
cp original.txt copy.txt
shasum -a 256 original.txt copy.txt

-a 256がSHA-256の指定。表示されるのは、計算値と対象ファイル名だよ。掲載例をMacのshasum 6.02で実行し、次の二行が同じ値になることを確認した。

5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03  original.txt
5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03  copy.txt

名前の違いは計算値に含まれない。ファイル名をそろえる作業と、内容を比べる作業は分けて考えよう。

一文字の変更も比較してみる

練習用のcopy.txtだけを、次の内容へ書き換える。

printf 'hello!\n' > copy.txt
shasum -a 256 original.txt copy.txt

編集部の確認では、元ファイルの値は変わらず、copy.txtは次の値になった。感嘆符を一つ足しただけでも、比較結果は異なるよ。

c8a31cb076b21999bd2cdcfa5f446a7a6644de88037087112fa18bd90cc13984  copy.txt

初期状態へ戻すには、練習用の元ファイルからcp original.txt copy.txtでコピーし直す。どちらが正しい版か不明な実データへ、同じ操作をいきなり使わないでね。

実ファイルでは、書き込みが終わってから照合する

  1. 元とコピー先で、対象の版・場所・ファイル名を確認する。
  2. 書き出しやコピーの完了を待つ。処理中に中身が変わるファイルは比較対象にしない。
  3. shasum -a 256 "元のパス" "コピー先のパス"の形で計算する。空白を含むパスは引用符で囲む。
  4. 値全体を比較する。一致しなければ、すぐ削除せず、選んだ版やコピー完了の有無を見直す。
  5. コピー元を残したまま再転送し、もう一度確認する。

存在しないパスや読み取り権限の問題は、計算値の不一致とは別の失敗。エラーが出たファイルを「一致した」と数えないようにしよう。

一致確認だけでバックアップを完成にしない

ファイル本体の内容を比較しても、アクセス権や追加のメタデータ、復元手順まで確認したことにはならない。データベースなどは、稼働中の保存ファイルを直接コピーするのではなく、その製品のバックアップ手順を先に確認しよう。

元と同じ誤ったデータをコピーした場合も、値は一致する。まず同期とバックアップの違いを整理し、必要な版を保存できたか、復元して開けるかまで順に確かめたいね。

参考・出典

公開と変更の記録
  • :初回公開

日時は日本時間です。記載のある変更は、確認できた編集記録に基づきます。更新日の違いだけから変更内容を推測して載せることはありません。

更新・訂正の方針 →

みんなのコメント 0

感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。

最初のコメントをどうぞ。