Mongodb
為什麼相同 mongodump 備份的 tar 得到不同的 SHA-1 校驗和?
我正在嘗試備份我的 MongoDB 數據庫並使用 SHA-1 校驗和檢查更改。問題是校驗和不一樣。
$ mongodump --quiet --db backup --out . $ tar -cf backup1.tar backup $ rm -r backup $ sha1sum backup1.tar d9519a5183fb797639af583738e292527c667420 backup1.tar $ mongodump --quiet --db backup --out . $ tar -cf backup2.tar backup $ rm -r backup $ sha1sum backup2.tar f5c9e3e99e857a88052e9121a9eca61c40909c07 backup2.tar
我確定數據庫沒有更新:
$ mongodump --quiet --db backup --out b1 $ mongodump --quiet --db backup --out b2 $ diff -r b1 b2
此問題並非特定於 MongoDB。與大多數文件存檔程序一樣,該
tar
格式儲存有關存檔文件的元數據,包括時間戳。如果您在兩個不同的時間進行數據庫備份,則備份的內容將相同,但元數據將不同。要檢查實際數據文件中的更改,您應該在 tarring 之前計算校驗和並將其包含在存檔中:
mongodump --quiet --db backup --out . sha1sum backup/* > backup/sha1.txt tar -cf backup.tar backup
然後,您可以比較校驗和文件以確定兩個備份是否具有相同的數據:
$ diff -q backup/sha1.txt backup2/sha1.txt Files backup/sha1.txt and backup2/sha1.txt differ
通過單獨的校驗和,您還可以準確查看更改了哪些文件:
$ diff backup/sha1.txt backup2/sha1.txt 3,4c3,4 < b8e37a70f4dd7a8265a9e030edec1251224957dc backup/bacon.bson < 9fabdb53acb5d3261fa973325c52abdd5cade6ff backup/bacon.metadata.json --- > 96d6e9de8885e3f24a98148f8b8630b843882c4e backup/bacon.bson > a3cd2cfe5b088c2033eb5e292fcbf8b39be65727 backup/bacon.metadata.json