首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >` `aws s3 sync`如何判断文件是否被更新?

` `aws s3 sync`如何判断文件是否被更新?
EN

Stack Overflow用户
提问于 2017-04-21 05:07:31
回答 3查看 14.7K关注 0票数 26

当我在终端中背靠背运行该命令时,它不会在第二次同步。这太棒了!但是,如果我运行我的构建过程并以编程方式背靠背地运行aws s3 sync,它会同步两次所有的文件,就好像我的构建过程第二次改变了一些不同的东西一样。

不知道会发生什么。有什么想法吗?

我的构建过程基本上是pug source/ --out static-site/stylus -c styles/ --out static-site/styles/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-21 08:18:03

根据这个- http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

S3同步将比较文件的大小和上次修改的时间戳,以确定是否需要同步文件。

在您的情况下,我怀疑构建系统会导致较新的时间戳,即使文件大小没有更改?

票数 19
EN

Stack Overflow用户

发布于 2018-12-16 05:35:07

AWS CLI sync

如果本地文件的大小与s3对象的大小不一致,或者本地文件的最后修改时间晚于s3对象的最后修改时间,或者本地文件在指定的存储桶和前缀下不存在,则需要上传本地文件。

-- size -only (布尔值)使每个key的大小成为决定是否从源同步到目标的唯一标准。

您需要使用--size-only选项,该选项只查看文件大小,而不查看上次修改日期。对于频繁更改上次修改日期而不是文件的实际内容的资产构建系统来说,这是完美的(我在使用webpack构建时遇到了这种情况,即使文件内容是相同的,字体等内容也保持同步)。如果您不使用将内容的散列合并到文件名中的build方法,则可能会遇到问题(如果build发出大小相同但内容不同的文件),因此请注意这一点。

我手动测试了添加一个不在远程存储桶上的新文件,它确实是通过--size-only添加到远程存储桶中的。

票数 18
EN

Stack Overflow用户

发布于 2019-01-23 05:29:04

这篇文章有点过时了,但我还是会为通过google来到这里的人们贡献自己的力量。

我同意勾选答案。为了添加额外的上下文,亚马逊网络服务的S3功能在许多方面不同于标准的linux s3。在Linux中,可以通过计算md5hash来确定文件是否发生了更改。S3不这样做,所以它只能根据大小和/或时间戳来确定。更糟糕的是,亚马逊网络服务在以任何一种方式传输时都不会保留时间戳,所以时间戳在同步到本地时被忽略,只在同步到s3时使用。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43529926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档