【发布时间】:2012-12-22 11:15:29
【问题描述】:
我正在用 python 编写一个脚本,用于将静态站点部署到 aws(s3、cloudfront、route53)。因为我不想在每次部署时都上传每个文件,所以我通过比较它们的 md5 散列和它们的电子标签(s3 设置为对象的 md5 散列)来检查哪些文件被修改。这适用于所有文件,除了我的构建脚本在上传之前 gzip 压缩的文件。查看文件内部,gzip 似乎并不是真正的纯函数;每次运行 gzip 时输出文件都会有非常细微的差异,即使源文件没有更改。
我的问题是:有没有办法让 gzip 在给定完全相同的输入的情况下可靠且可重复地输出完全相同的文件?还是我最好只检查文件是否已压缩、解压缩并计算 md5 哈希/手动设置电子标签值?
【问题讨论】:
-
gzip 实际上对于完全相同的输入是稳定的。你确定没有改变吗?可能包含的存档元数据已更改(例如每次生成文件时将“修改”设置为“现在”)?
-
绝对有可能只是元数据问题,因为相同的字节总是不同的。即便如此,有什么好的方法可以解决这个问题吗?只是让我的构建脚本将最后修改设置为某个常量?