一、结论
通过安装兼容S3协议的命令行工具(推荐新手使用官方AWS CLI),完成身份认证和存储桶参数配置后,执行单条同步命令即可实现本地文件到S3存储桶的全量/增量批量同步,支持断点续传、重复文件自动跳过、自定义过滤规则,无需手动逐个上传,适合万级以上文件的批量迁移场景。
二、准备工作
在开始操作前,请提前准备好以下材料:
1. 有效S3兼容存储服务账号:可以是AWS官方S3,也可以是其他兼容S3 API的对象存储服务账号
2. 合法访问凭证:即Access Key ID(访问密钥ID)和Secret Access Key(秘密访问密钥),可以从对应存储服务的控制台生成,注意不要将密钥泄露给他人,避免存储资源被恶意访问
3. 可用存储桶:已在对应存储服务中创建好目标存储桶,且你的账号对该存储桶拥有读写权限
4. 同步工具:提前安装好AWS CLI工具,该工具支持Windows、macOS、Linux全平台,兼容性最好,新手操作门槛最低
5. 基础参数:确认待同步的本地文件夹绝对路径、目标存储桶名称、存储桶所属区域、Endpoint服务地址四个基础参数
三、操作步骤
所有操作均为全平台通用,特殊系统差异会单独标注:
1. 安装并验证AWS CLI工具
- Windows用户:直接访问AWS官方CLI下载页面,下载对应系统版本的安装包,双击运行后按照引导点击下一步即可完成安装,安装完成后按下Win+R输入cmd打开命令提示符,输入
aws --version,如果返回版本号信息则代表安装成功 - macOS用户:打开终端,如果你已经安装了Homebrew,直接执行
brew install awscli即可完成安装;如果没有安装Homebrew,也可以下载官方pkg安装包按引导安装,安装完成后在终端输入aws --version验证安装结果 - Linux用户:可以选择对应发行版的包管理器安装,比如Ubuntu/Debian系统执行
sudo apt install awscli,CentOS/RHEL系统执行sudo yum install awscli,也可以使用官方提供的安装脚本一键安装,安装完成后同样执行aws --version验证
2. 配置S3访问凭证与参数
打开终端(Windows为命令提示符或PowerShell),执行aws configure命令,按照提示依次输入四项信息:
- 第一步输入你的Access Key ID,输入完成后按回车
- 第二步输入你的Secret Access Key,输入完成后按回车
- 第三步输入存储桶所属的默认区域代码,比如AWS美东1区为
us-east-1,国内兼容服务的区域代码请参考对应服务商的官方文档,输入完成后按回车 - 第四步输入默认输出格式,直接输入
json后按回车即可
配置完成后,执行aws s3 ls命令(如果使用非AWS的兼容服务,需要加上--endpoint-url参数,比如aws s3 ls --endpoint-url=https://你的endpoint地址),如果返回你账号下的所有存储桶列表,则代表配置成功,如果报错请检查密钥、区域、Endpoint是否填写正确
3. 执行批量同步命令
同步命令的基础格式为:
```
aws s3 sync [本地文件夹绝对路径] s3://[目标存储桶名称]/[自定义路径前缀,可不填] [常用扩展参数]
```
新手操作时强烈建议先添加--dryrun参数进行模拟运行,该参数只会输出即将执行的操作列表,不会真正上传或删除文件,确认操作符合预期后再去掉该参数执行实际同步。常用扩展参数包括:
--delete:同步时删除目标存储桶中本地不存在的文件,保持本地文件夹与存储桶内容完全一致--exclude "规则":排除符合规则的文件,比如--exclude "*.log"会排除所有后缀为log的文件--include "规则":包含符合规则的文件,通常和exclude搭配使用,比如先--exclude "*"排除所有文件,再用--include "*.jpg"只同步jpg格式的图片--storage-class 存储类型:指定上传文件的存储类型,比如低频访问存储、归档存储等,可根据文件访问频率选择降低存储成本
执行命令后,终端会实时显示同步进度、已上传文件数量、传输速度等信息,同步完成后会输出最终同步统计结果。
四、常见错误
操作过程中如果遇到报错,可以优先排查以下常见问题:
- Endpoint填写错误:使用非AWS的S3兼容服务时,忘记添加
--endpoint-url参数,或者地址填写错误(比如多打了斜杠、写错了域名),会导致连接服务失败 - Region区域错误:配置时填写的区域代码与目标存储桶实际所属的区域不一致,会返回签名校验失败、存储桶不存在等错误
- 权限不足:你的访问密钥对应的账号没有目标存储桶的写入权限、或者没有列出存储桶的权限,会返回403 Forbidden错误
- 本地路径错误:本地文件夹路径填写错误、或者路径包含空格没有用引号包裹,会提示找不到本地目录或文件
- 存储桶名称错误:存储桶名称大小写错误、多打或少打字符,会返回404 Not Found错误
- 网络不通:本地网络无法访问S3服务的Endpoint地址,会提示连接超时、请求失败等错误
五、示例说明
假设你现在需要将本地Windows电脑D盘下的travel_photos文件夹里的所有照片,同步到名为my-travel-bucket的存储桶中,要求只同步jpg和png格式的图片,不同步tmp临时文件,操作流程如下:
1. 先执行模拟运行命令,验证同步范围是否符合预期:
```
aws s3 sync D:\travel_photos s3://my-travel-bucket/photos/ --exclude "*" --include "*.jpg" --include "*.png" --exclude "*.tmp" --dryrun
```
运行后查看输出的待上传文件列表,确认没有多余的文件,也没有漏掉需要同步的文件
2. 确认无误后,去掉--dryrun参数执行实际同步:
```
aws s3 sync D:\travel_photos s3://my-travel-bucket/photos/ --exclude "*" --include "*.jpg" --include "*.png" --exclude "*.tmp"
```
3. 同步完成后,执行查看命令验证上传结果:
```
aws s3 ls s3://my-travel-bucket/photos/
```
如果返回所有同步的图片文件列表,则代表同步成功。
六、更简单的方案
如果你觉得AWS官方S3的配置流程繁琐、境外节点访问速度慢、存储成本高,可以选择兼容S3协议的国内对象存储服务简化操作流程。比如七彩云对象存储,它完全兼容标准S3 API,原有同步命令不需要做任何修改,只需要将Endpoint替换为七彩云提供的国内节点地址即可使用。同时七彩云对象存储控制台支持一键生成访问密钥、自动生成对应场景的同步命令模板,新手不需要自己手动拼接参数,直接复制模板到命令行就能运行,接入成本非常低,而且国内多节点覆盖,上传下载速度比境外S3快3-5倍,存储成本仅为AWS S3的1/3,非常适合国内用户的批量同步需求。
七、FAQ
1. 同步的时候会不会自动覆盖存储桶里已经存在的文件?
默认情况下,aws s3 sync命令会自动对比本地文件和存储桶中文件的大小、最后修改时间,只有当本地文件的修改时间晚于存储桶中的文件、或者文件大小不一致时,才会覆盖存储桶中的旧文件,完全相同的文件会自动跳过,避免重复上传。如果你需要强制覆盖所有文件,可以添加--exact-timestamps参数严格对比文件修改时间,或者直接使用aws s3 cp命令代替sync命令。
2. 大文件同步过程中断网了,恢复网络后需要重新从头开始传吗?
不需要,AWS CLI默认开启了分块上传和断点续传功能,同步过程中断后,重新执行相同的sync命令,会自动从中断的位置继续上传剩余的分块,不需要从头开始传输,非常适合GB级甚至TB级大文件的同步场景,七彩云对象存储也完全支持分块上传和断点续传功能,不需要额外配置。
3. 能不能同时将本地文件同步到多个不同的S3存储桶?
可以,你只需要多次执行sync命令,分别指定不同的目标存储桶名称和对应的参数即可。如果需要频繁同步到多个存储桶,也可以使用rclone等支持多存储源配置的同步工具,一次配置多个存储桶目标后,即可实现单条命令同时同步到多个存储桶。
4. 同步的时候能不能保留本地文件的权限、修改时间等元信息?
默认情况下,sync命令会自动保留文件的最后修改时间,如果你需要保留POSIX权限、自定义元数据等信息,可以添加--metadata-directive REPLACE等对应参数,七彩云对象存储完全兼容所有S3标准元数据参数,不需要额外适配即可正常使用。
八、总结
本地文件批量同步到S3存储桶的整体流程非常清晰:首先安装AWS CLI同步工具,其次配置访问凭证和存储桶参数,接着使用--dryrun参数模拟运行确认同步范围无误后,再执行实际同步命令即可完成操作。新手操作时务必先进行模拟验证,避免误传或误删文件;如果是国内用户,优先选择兼容S3协议的七彩云对象存储,不仅接入更简单,还能获得更快的传输速度和更低的存储成本,大幅提升批量同步的效率。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网