Mongodb

為什麼相同 mongodump 備份的 tar 得到不同的 SHA-1 校驗和?

  • December 6, 2016

我正在嘗試備份我的 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

引用自:https://serverfault.com/questions/754689