-size-only(boolean)使每个键的大小成为决定是否从源同步到目标的唯一标准。 您需要--size-only选项,该选项只查看文件大小而不查看最后修改日期,这对于经常更改最后修改日期而不更改文件实际内容的资产构建系统来说是完美的(我遇到了这个与webpack构建的东西,如字体保持同步,即使文件内容是相同的).如果你不' Don "不要使用将内容的哈希值合并到文件名中的构建方法,这可能会遇到问题(如果构建生成大小相同但内容不同的文件),所以要小心。 我确实手动测试了添加一个不在远程存储桶上的新文件,它确实被添加到了--size-only的远程存储桶中。
3条答案
按热度按时间hs1rzwqc1#
根据这个-http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
S3 sync比较文件的大小和上次修改的时间戳,以查看文件是否需要同步。
在您的情况下,我怀疑构建系统会导致更新的时间戳,即使文件大小没有改变。
bxjv4tth2#
AWS CLI sync:
如果本地文件的大小与s3对象的大小不同、本地文件的上次修改时间晚于s3对象的上次修改时间,或者本地文件不存在于指定的存储桶和前缀下,则需要上载本地文件。
您需要
--size-only
选项,该选项只查看文件大小而不查看最后修改日期,这对于经常更改最后修改日期而不更改文件实际内容的资产构建系统来说是完美的(我遇到了这个与webpack构建的东西,如字体保持同步,即使文件内容是相同的).如果你不' Don "不要使用将内容的哈希值合并到文件名中的构建方法,这可能会遇到问题(如果构建生成大小相同但内容不同的文件),所以要小心。我确实手动测试了添加一个不在远程存储桶上的新文件,它确实被添加到了
--size-only
的远程存储桶中。ahy6op9u3#
这篇文章有点过时了,但我还是会为通过谷歌来到这里的人们做出贡献。
我同意勾选答案。要添加额外的上下文,AWS S3功能在许多方面不同于标准Linux S3。在Linux中,可以计算md5 hash来确定文件是否已更改。S3不这样做,因此它只能根据大小和/或时间戳进行确定。更糟糕的是,AWS在传输时不保留时间戳。因此当同步到本地时忽略时间戳,并且仅当同步到S3时使用时间戳。