跳到主要内容

AWS S3 速查:S3 命令怎么用在备份/同步/静态托管

整理我每天真正在跑的 AWS S3 命令,从 cp、sync 增量同步到桶权限、版本控制、生命周期规则,配上一条能直接复制的部署命令和踩过的坑,帮你少在终端里来回试。

发布于 作者 李雷
#aws #s3 #cli #运维 #备份

AWS S3 速查:S3 命令怎么用在备份/同步/静态托管

S3 的命令不算多,但真正要用对场景的就那么二十几条。我自己刚接手一批桶的时候,最常见的状态是:终端里 aws s3 help 翻来翻去,想找 sync 的 --exclude 写法,结果点进去是几百行 API 参考。后来我把每天真用到的命令分了几类钉在桌面,基本不用再翻文档了。这篇就把这套思路写出来,顺手附一份可搜索的 AWS S3 命令速查,需要哪条直接搜。

两个入口:aws s3 和 aws s3api

先分清楚两个命令家族。aws s3 是高层接口,帮你自动处理分段上传、自动翻页列表,日常的复制、同步、生成预签名链接都走它。aws s3api 是底层接口,一一对应 S3 的 REST API,你需要精细控制的时候才用:字节范围下载、上传时附自定义 metadata、服务端 copy-object 换加密、管理版本控制和生命周期配置。

判断标准很简单:把文件搬来搬去用 aws s3,要调具体某个 API 字段就用 aws s3api。混淆这两个是新手最容易在文档里迷路的地方。

桶操作:ls、cp、mb、rb

基本盘四条命令:aws s3 ls 列桶或列对象,aws s3 cp 复制单个对象,aws s3 mb 建桶,aws s3 rb 删桶。删桶要注意,有版本控制的桶不能直接删,得先把所有历史版本和删除标记清掉,再 aws s3 rb s3://bucket --force。大桶用 CLI 循环删会很慢,改用 S3 Batch Operations 快得多。

建桶还有个老坑:us-east-1 这个 region 创建桶时 LocationConstraint 要传 null,其他 region 才填具体值,而且桶名全局唯一,不是账号内唯一。

sync 增量同步:部署静态站的主力

aws s3 sync 是我用得最多的命令。它做的是增量同步:只上传源端有变化的文件,跳过已经一致的对象,所以重复部署很快。加 --delete 会做镜像,目标端有而源端没有的文件会被删掉,这正是部署静态站想要的效果。

我每次给静态站做 CI 部署,跑的就是这一条:

aws s3 sync ./out s3://acme-www/ --delete \
  --cache-control "max-age=31536000" --exclude "*.html"

把构建产物 ./out 镜像到桶,设长缓存,但 HTML 文件排除在长缓存外(它们要随时更新)。第一次对某个环境部署前,我一定先加 --dryrun 空跑一遍,确认来源是 ./out 而不是仓库根目录。这就引出 sync 最致命的坑:aws s3 sync . s3://bucket/ --delete 如果从错误目录执行,会把当前目录的东西同步过去,同时清空桶里其他所有内容。来源永远固定到具体子目录,别图省事写个点。

权限:为什么 --acl public-read 不灵了

要把桶设成静态网站公开可读,2023 年 4 月之后建的桶不能再用 --acl public-read,新桶默认禁用了 ACL(Object Ownership 是 BucketOwnerEnforced),硬用会报 AccessControlListNotSupported。

现在的正确做法是三步:aws s3 website 开启网站托管;aws s3api put-public-access-block 把四个 Block Public Access 全关掉;再 aws s3api put-bucket-policy 写一条给 Principal "*" 授予 s3:GetObject 的桶策略。还有一点容易忘:S3 网站端点只有 HTTP,要 HTTPS 得在前面套 CloudFront。跨账号访问要桶策略和 IAM 两边都授权,这块和 AWS IAM 速查 配合着看会顺很多。

版本控制与生命周期:备份和省钱

版本控制是 S3 自带的"时间点备份"。开了之后,对象被覆盖时上一个版本还留着。我真遇到过 CI 误把 config.json 推成错的环境变量,靠 aws s3api list-object-versions 找到最后一个正确版本的 VersionId,再用 copy-object 把它复制成当前版本就恢复了,完全不用外部备份。S3 没有回收站,没开版本控制的覆盖就是永久覆盖,这条值得在存生产数据前就配好。

生命周期规则负责自动省钱:把冷数据转移到更便宜的存储类别、让非当前版本到期删除、终止游离的未完成分段上传(这些碎片会持续计费却看不见)。配一条规则比手动清理可靠得多。

把命令钉在手边

S3 的命令运维、备份、静态托管三类场景基本就覆盖九成。命令记不全很正常,关键是知道哪类问题该找哪条。我把这些连同坑提示都整理进了 AWS S3 命令速查,搜命令、说明、坑、例子都能实时过滤,纯浏览器运行不连任何账号。如果你的工具链还涉及别的 CLI,顺带可以看看 AWS CLI 速查,通用参数和 profile 配置那部分能省不少时间。


Made by Toolora · Updated 2026-06-13