Compression
BZ2 備份文件的大小每天都沒有變化
最近我從 切換
zip
到bz2
壓縮夜間數據庫轉儲。我使用的命令是tar cj
. 舊zip
文件的大小每天都會略有不同:-rw-r--r-- 1 mysql mysql 1192139 Aug 20 22:00 mysql_full_export.Fri.zip -rw-r--r-- 1 mysql mysql 1192425 Aug 23 22:00 mysql_full_export.Mon.zip -rw-r--r-- 1 mysql mysql 1192140 Aug 21 22:00 mysql_full_export.Sat.zip -rw-r--r-- 1 mysql mysql 1192145 Aug 22 22:00 mysql_full_export.Sun.zip -rw-r--r-- 1 mysql mysql 1192137 Aug 19 22:00 mysql_full_export.Thu.zip -rw-r--r-- 1 mysql mysql 1192403 Aug 24 22:00 mysql_full_export.Tue.zip -rw-r--r-- 1 mysql mysql 1186645 Aug 25 22:00 mysql_full_export.Wed.zip
而新
bz2
文件在上周顯示相同的文件大小:-rw-r--r-- 1 mysql mysql 972800 Oct 1 22:00 mysql_full_export.Fri.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 4 22:00 mysql_full_export.Mon.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 2 22:00 mysql_full_export.Sat.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 3 22:00 mysql_full_export.Sun.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 7 22:00 mysql_full_export.Thu.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 5 22:00 mysql_full_export.Tue.bz2 -rw-r--r-- 1 mysql mysql 972800 Oct 6 22:00 mysql_full_export.Wed.bz2
bz2
如果壓縮文件的大小僅略有不同,這是否正常?該數據庫幾乎沒有變化,但從zip
文件大小可以看出它確實發生了一些變化。跟進:
下面標記為正確的答案似乎是最好的解釋。計算 md5 校驗和的建議也很有幫助,因為它確認文件確實不同:
$ md5sum *.bz2 7bec25e80644645e6b2d5b417bb4627d mysql_full_export.Fri.bz2 9cca30e7ed4fb536976ef9d8705e0466 mysql_full_export.Mon.bz2 bc9b9cd1e5a5e552811bff80192b1b43 mysql_full_export.Sat.bz2 7ebbed98f7153a6cafe61836d9a6440d mysql_full_export.Sun.bz2 ad1af98a0ecf90bef1dc1c0b3dedb101 mysql_full_export.Thu.bz2 b399d30e03c200c1ad03bde391e5e682 mysql_full_export.Tue.bz2 b14b4d1bb22ef39b9ebc2f668a2f520d mysql_full_export.Wed.bz2
另一個想法是 tar 文件格式總是在 512 字節邊界上對齊,
NUL
如果它更短(每個文件),它會用字元填充它。現在授予,tar 應該在 bz2 之前完成,所以它的大小應該仍然不同(理論上)。但也許它是先壓縮然後將其放入 tar 中,導致它與 512 字節邊界對齊?
腳本存檔中可能存在錯誤。比較文件:
cmp mysql_full_export.Wed.bz2 mysql_full_export.Tue.bz2
比較檔案的內容(使用 diff 或 cmp)。