BZ2 备份文件的大小每天没有变化

BZ2 备份文件的大小每天没有变化

最近,我从 切换到zipbz2压缩夜间数据库转储。我使用的命令是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

答案1

另一个想法是 tar 文件格式始终在 512 字节边界上对齐,NUL如果它更短(每个文件),它会用字符填充它。

现在,tar 应该在 bz2 之前完成,因此它的大小应该仍然会有所不同(理论上)。但也许它先压缩,然后将其放入 tar 中,导致它与 512 字节边界对齐?

答案2

也许脚本存档中有一个错误。比较文件:

cmp mysql_full_export.Wed.bz2 mysql_full_export.Tue.bz2

比较档案的内容(使用 diff 或 cmp)。

答案3

在包含 bz2 文件的目录中粘贴此命令:

for file in *.bz2;do echo "checksum for ${file/.bz2/}: $(bunzip2 -c $file|md5sum)";done

如果所有的校验和都不同,那么未压缩的文件也是不同的。

相关内容