解説
コピーしたファイルは同じ中身?SHA-256で照合する手順
名前や容量だけで判断せず、Macのshasumでコピー前後の内容を比較。小さな実行例と、不一致のときに戻って確認する場所を整理するよ。

バックアップへコピーしたファイルが、元と同じ中身か確かめたい。名前や容量が同じでも、それだけでは内容まで一致したとは言い切れないよ。今回は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でコピーし直す。どちらが正しい版か不明な実データへ、同じ操作をいきなり使わないでね。
実ファイルでは、書き込みが終わってから照合する
- 元とコピー先で、対象の版・場所・ファイル名を確認する。
- 書き出しやコピーの完了を待つ。処理中に中身が変わるファイルは比較対象にしない。
shasum -a 256 "元のパス" "コピー先のパス"の形で計算する。空白を含むパスは引用符で囲む。- 値全体を比較する。一致しなければ、すぐ削除せず、選んだ版やコピー完了の有無を見直す。
- コピー元を残したまま再転送し、もう一度確認する。
存在しないパスや読み取り権限の問題は、計算値の不一致とは別の失敗。エラーが出たファイルを「一致した」と数えないようにしよう。
一致確認だけでバックアップを完成にしない
ファイル本体の内容を比較しても、アクセス権や追加のメタデータ、復元手順まで確認したことにはならない。データベースなどは、稼働中の保存ファイルを直接コピーするのではなく、その製品のバックアップ手順を先に確認しよう。
元と同じ誤ったデータをコピーした場合も、値は一致する。まず同期とバックアップの違いを整理し、必要な版を保存できたか、復元して開けるかまで順に確かめたいね。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。