Metlivi 部落格

如何使用檔案校驗碼檢查離線日記備份

若要檢查數位日記的離線複本是否與來源完全逐位元組相符,請從目標來源建立 SHA-256 校驗碼清單與檔案清單,然後對照該受保護的基準驗證備份。相符的校驗碼能佐證清單內檔案的位元組狀態;但它無法證明清單是否完整、原始檔案是否正確或可讀取,亦無法證明不受信任的基準是否具真實性。

2026年9月29日5 分鐘閱讀生活美學與自我表達作者:Metlivi Editorial Team
第 1 節

校驗碼檢查能告訴你什麼

校驗碼是根據檔案內容計算得出的數值。如果內容發生變更,計算出的數值預計也會不同。因此,將備份與參考值進行比對,有助於識別在複製或儲存過程中發生的變更。數位保存聯盟(Digital Preservation Coalition)將校驗碼描述為檢查傳輸是否成功以及檔案持續固定性(fixity)的一種方法,並強調應與已知正確的參考值進行比對([固定性與校驗碼](https://www.dpconline.org/handbook/technical-solutions-and-tools/fixity-and-checksums))。

參考值的來源至關重要:如果你從同一個已經損壞的複本中同時計算基準值與比對值,兩者相符並不能證明早期檔案的內容為何。相符也不能證明日記條目可以正常開啟、來源是否完整,或是由誰建立了這些檔案。請將此過程視為針對刻意選定的一組檔案所進行的位元組比對。

第 2 節

選擇並記錄來源集合

確認一個應該進行備份且狀態穩定的已匯出日記資料夾,並在進行雜湊計算前完成所有編輯。本範例適用於一般檔案(包含隱藏檔案);它不會追蹤符號連結(symbolic links),也無法一致性地擷取執行中的應用程式資料庫。需要時請將關聯資料匯出至所選資料夾,並查閱該應用程式的匯出說明。請將產生的清單與校驗碼檔案儲存在該資料夾之外。

這些範例需要 Bash 以及 GNU findutils/coreutils(如在 Ubuntu Linux 環境下);它們不適用於未經修改的 macOS 或 Windows 終端機。本範例使用虛構的本地路徑與新的輸出檔名。請使用現有的父目錄來存放記錄;選擇未被使用的檔名,以免覆蓋早期的基準檔案。請將它們替換為你電腦上的實際路徑;並確保私密日記與產生的記錄保留在本地端。Ubuntu 手冊記錄了 `sha256sum` 的產生方式及其用於驗證先前輸出的 `--check` 選項([sha256sum 手冊](https://manpages.ubuntu.com/manpages/noble/man1/sha256sum.1.html))。

```bash ( set -euo pipefail set -C cd "/home/example/Diary" find . -type f -print0 | LC_ALL=C sort -z > "/home/example/diary-inventory.nul" xargs -0 -r sha256sum < "/home/example/diary-inventory.nul" > "/home/example/diary-source.sha256" test -s "/home/example/diary-source.sha256" ) ```

該子 shell 會在切換目錄失敗或管道出錯時立即停止、拒絕覆蓋現有的記錄檔案,並拒絕空的校驗碼清單。如果回報錯誤,請勿將部分輸出的內容作為基準。檔案清單使用 NUL 分隔符號,因此包含換行符號的檔名仍能保持獨立區隔。這兩份記錄都保留在所選資料夾之外。在信任來源集合之前,請對照日記匯出內容進行審查;校驗碼清單無法揭示在它建立之前就已被遺漏的附件。

第 3 節

保護基準並複製檔案

將校驗碼清單與檔案清單儲存在獨立於工作來源與離線備份之外的位置。保護它們免於意外編輯,可行時請保留第二份受保護的複本。只有當你有理由信任並妥善保存該基準時,校驗碼比對作為參考檢查才具有價值。保存指南同樣將固定性資訊視為記錄與稽核的用途;NARA 在其數位保存計畫中描述了記錄固定性、追蹤檔案操作以及建立清單和日誌的做法([美國國家檔案館數位保存](https://www.archives.gov/preservation/digital-preservation/about))。

使用你平常習慣的檔案複製方式,將所選的日記資料夾複製到備份硬碟中。在不進行檢查時,請將備份裝置保持離線中斷連線。這裡的指令不會執行複製操作,而是檢查已經複製完成的檔案。在檢查之前,請避免編輯、重新命名或重新整理備份,因為路徑變更可能會導致清單無法找到預期的檔案。

第 4 節

驗證複製的位元組

掛載離線硬碟並進入已複製的日記資料夾。對照基準清單執行檢查,使用相同的 SHA-256 演算法以及在來源端記錄的相對路徑:

```bash ( set -euo pipefail cd "/media/example/DiaryBackup/Diary" sha256sum --check --strict "/home/example/diary-source.sha256" ) ```

清單儲存的是以 `./` 開頭的相對路徑,因此驗證必須從已複製的日記資料夾中執行。顯示 `OK` 表示該檔案比對相符。缺少或不相符的檔案、格式錯誤的校驗碼行以及指令錯誤都需要進行調查;切勿使用 `--ignore-missing` 隱藏它們,也不要因為看到幾行 `OK` 就假定整體檢查已通過。[Ubuntu 手冊](https://manpages.ubuntu.com/manpages/noble/man1/sha256sum.1.html)詳細記錄了這些選項。

此項檢查不會回報備份中存在但未列在清單內的多餘檔案。如果你需要偵測多餘的檔案或非預期的目錄內容,請將備份的檔案清單與已儲存的來源清單進行額外的獨立比對。清單完全相同仍無法證明你最初選取的範圍涵蓋了所有你打算保存的日記項目。

第 5 節

在不覆蓋證據的前提下調查不相符情況

如果發現檔案不相符,請記錄其路徑並保持兩份複本不變。確認目標清單與工作資料夾正確無誤,然後分別比對來源與備份。檢查是否因編輯、重新命名或未完整複製而導致差異。在調查期間請保留不相符的複本;自動覆蓋它將會消除證據。

數位保存指南建議使用已知良好的複本來替換已遺失固定性的複本,而這取決於手頭上是否有另一個值得信賴的複本可用([數位保存聯盟](https://www.dpconline.org/handbook/technical-solutions-and-tools/fixity-and-checksums))。對於個人日記而言,這是在比對現有證據後才應做出的決定。校驗碼的作用是偵測差異,無法修復檔案或替你選擇正確的版本。

第 6 節

局限性與實用記錄

請在本地端保留簡要記錄,記下來源資料夾、基準建立日期、演算法、清單位置以及每次檢查的結果。在日後進行檢查時,請保留已建立的基準,而非從受評估的備份中重新建立基準。在進行刻意的編輯或轉換後,請另外記錄新版本。此外請持續進行偶爾的開啟與還原檢查:僅憑位元組的固定性無法得知你的日記日後是否仍可正常使用。

相關閱讀

繼續探索這個主題