`aws s3 cp` 与 `aws s3 sync` 行为和成本
`aws s3 cp` vs `aws s3 sync` behavior and cost
我有一个静态站点,我正在将其部署到 s3
,然后使用 CloudFront
分发给用户。构建站点后,我想将新构建推送到 s3
。我找到了 2 种方法来做到这一点。
aws s3 cp --recursive ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'
aws s3 sync --delete ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'
我计划每周部署一到两次。
我想知道这些哪个比较便宜(钱)?更清楚地说,我想知道在长期 运行?
中,哪一个会花费我更少的钱
我尝试阅读文档,但无法找出差异。请帮我解决这个问题。
需要注意的一件事是 aws s3 cp --recursive
和 aws s3 sync --delete
有不同的行为。
aws s3 cp
将复制所有文件,即使它们已经存在于目标区域中。如果文件已从源中删除,它也不会从目标中删除文件。
aws s3 sync
在复制文件之前查看目的地,并且只复制新的和更新的文件。 --delete
标志也会删除目标中的内容,如果它们在源中被删除的话。
sync
命令是您想要的,因为它旨在处理在复制最少数据量的同时保持两个文件夹同步。同步应该会导致更少的数据被推送到 S3 存储桶中,因此总体成本应该更低。
举一个反例,aws s3 cp
比 sync
性能更好且成本更低的用例是,如果您只需要传输文件并且您 知道 所有文件都是目的地的新文件。这是更高性能和更低的成本,因为代码不会在开始传输之前检查目标是否存在。
我有一个静态站点,我正在将其部署到 s3
,然后使用 CloudFront
分发给用户。构建站点后,我想将新构建推送到 s3
。我找到了 2 种方法来做到这一点。
aws s3 cp --recursive ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'
aws s3 sync --delete ./public/ s3://bucket-name --cache-control 'public, max-age=300, s-maxage=31536000'
我计划每周部署一到两次。
我想知道这些哪个比较便宜(钱)?更清楚地说,我想知道在长期 运行?
中,哪一个会花费我更少的钱我尝试阅读文档,但无法找出差异。请帮我解决这个问题。
需要注意的一件事是 aws s3 cp --recursive
和 aws s3 sync --delete
有不同的行为。
aws s3 cp
将复制所有文件,即使它们已经存在于目标区域中。如果文件已从源中删除,它也不会从目标中删除文件。
aws s3 sync
在复制文件之前查看目的地,并且只复制新的和更新的文件。 --delete
标志也会删除目标中的内容,如果它们在源中被删除的话。
sync
命令是您想要的,因为它旨在处理在复制最少数据量的同时保持两个文件夹同步。同步应该会导致更少的数据被推送到 S3 存储桶中,因此总体成本应该更低。
举一个反例,aws s3 cp
比 sync
性能更好且成本更低的用例是,如果您只需要传输文件并且您 知道 所有文件都是目的地的新文件。这是更高性能和更低的成本,因为代码不会在开始传输之前检查目标是否存在。