一、结论
批量迁移本地文件到S3存储,可通过官方AWS CLI工具执行同步命令实现,全程无需手动逐个上传,支持增量同步、断点续传、文件过滤等常用需求,普通用户也能快速完成操作。如果使用兼容S3协议的第三方对象存储,还可以通过可视化工具进一步降低操作门槛。
二、准备工作
1. S3存储访问权限:拥有AWS账号或兼容S3协议的对象存储服务账号,提前获取对应服务的Access Key ID(访问密钥ID)、Secret Access Key(秘密访问密钥)、存储桶所在区域(region)、接口服务地址(endpoint),并确保密钥拥有对应存储桶的上传、列举权限。
2. 工具准备:提前安装AWS CLI v2版本,该工具为亚马逊官方提供的跨平台命令行工具,支持Windows、macOS、Linux全系统,是目前最稳定的S3批量操作工具。
3. 本地文件整理:将需要迁移的文件统一整理到一个独立的根目录下,提前删除不需要上传的缓存、临时文件,确认目录下所有文件都有可读权限,避免迁移过程中出现读取失败的问题。
4. 网络准备:如果迁移的文件总大小超过100GB,建议使用稳定的有线网络,避免中途断网影响迁移进度,也可以提前设置带宽限速避免占用正常办公、上网的带宽资源。
三、操作步骤
步骤1:安装AWS CLI工具
- Windows用户:访问亚马逊AWS官方网站下载AWS CLI v2的exe安装包,双击后按照引导点击下一步即可完成安装,安装完成后按下Win+R打开运行窗口,输入
cmd打开命令提示符,输入aws --version,如果返回版本号信息则说明安装成功。 - macOS用户:可以直接通过Homebrew安装,打开终端输入
brew install awscli即可完成安装;如果没有安装Homebrew,也可以下载官方pkg安装包双击安装,安装完成后在终端输入aws --version验证安装结果。 - Linux用户:以Ubuntu/Debian发行版为例,打开终端输入
sudo apt update && sudo apt install awscli即可完成安装,其他发行版可参考AWS官方文档对应安装命令,安装完成后同样通过aws --version验证。
步骤2:配置S3访问凭证
打开终端或命令提示符,输入aws configure后按回车,按照提示依次输入信息:
1. 首先输入你的Access Key ID,输入完成后按回车;
2. 接着输入你的Secret Access Key,输入完成后按回车;
3. 然后输入存储桶对应的region名称,比如AWS的美东1区为us-east-1,七彩云对象存储华北区为cn-north-1,输入完成后按回车;
4. 最后输入默认输出格式,直接填写json后按回车即可完成配置。
配置完成后可以输入aws s3 ls测试,如果返回你账号下已有的存储桶列表,说明凭证配置正确;如果使用第三方S3兼容服务,可以加上endpoint参数测试,比如七彩云的测试命令为aws s3 ls --endpoint-url https://s3.https://www.7caiyun.com。
步骤3:执行批量迁移命令
根据你的迁移需求选择对应命令即可,所有命令的基础格式为aws s3 sync 本地目录路径 s3://你的存储桶名称 可选参数:
- 全量同步本地目录所有文件到S3存储桶:比如本地目录为Windows下的
D:\公司文档\2024年项目,存储桶名称为company-project-2024,则命令为aws s3 sync "D:\公司文档\2024年项目" s3://company-project-2024,如果使用第三方S3兼容服务,需要在末尾加上endpoint参数,比如七彩云的话加上--endpoint-url https://s3.https://www.7caiyun.com即可。 - 增量同步:不需要额外加参数,重复执行上述sync命令即可,工具会自动对比本地文件和S3存储桶内文件的修改时间、大小,仅上传新增、修改过的文件,不会重复上传已经存在的相同文件。
- 过滤文件同步:如果只需要同步指定类型的文件,比如仅同步jpg和pdf文件,可以加上过滤参数:
--exclude "*" --include "*.jpg" --include "*.pdf",注意exclude参数要放在include参数前面。 - 限速同步:如果不想占用全部带宽,可以加上
--max-bandwidth 10MB/s参数,即可将上传速度限制为10MB/s,数值可以根据自己的带宽情况调整。
执行命令后终端会实时显示当前上传的文件名称、进度,全部传输完成后会显示迁移汇总信息,包括成功上传的文件数量、总大小、失败数量。
步骤4:验证迁移结果
迁移完成后,输入aws s3 ls s3://你的存储桶名称 --recursive(第三方服务加上对应endpoint参数),即可列出存储桶内所有文件,对比本地目录的文件数量、总大小,也可以随机抽查几个文件的MD5值,确认文件传输完整没有损坏。
四、常见错误
- endpoint填写错误:使用兼容S3的第三方对象存储时,未添加对应的
--endpoint-url参数,或者地址填写错误,会提示连接超时、桶不存在等错误。 - region错误:配置凭证时填写的region和存储桶实际所在的region不一致,会提示桶不存在、访问拒绝等错误。
- 权限问题:使用的Access Key没有对应存储桶的上传、列举权限,会返回403 Forbidden错误,需要到对应服务的控制台调整密钥权限。
- 本地路径错误:本地目录路径填写错误,或者当前系统用户没有该目录的读取权限,会提示找不到对应路径或文件读取失败。
- 存储桶不存在:要么存储桶名称填写错误,要么还未创建对应存储桶,需要先到S3服务控制台创建存储桶后再执行迁移命令。
五、示例说明
假设需要将macOS电脑上/Users/zhangshan/旅行照片/2024年云南行目录下的所有照片,批量迁移到七彩云对象存储的travel-photo-2024存储桶中,操作流程如下:
1. 注册七彩云对象存储账号,在控制台获取AK、SK、region为cn-north-1,endpoint为https://s3.https://www.7caiyun.com,提前创建好travel-photo-2024存储桶;
2. 安装好AWS CLI后,执行aws configure输入对应的AK、SK、region,默认输出格式填json;
3. 执行迁移命令:aws s3 sync /Users/zhangshan/旅行照片/2024年云南行 s3://travel-photo-2024 --endpoint-url https://s3.https://www.7caiyun.com;
4. 等待迁移完成后,执行aws s3 ls s3://travel-photo-2024 --endpoint-url https://s3.https://www.7caiyun.com --recursive | wc -l统计存储桶内的文件数量,和本地目录的文件数量对比,确认一致即迁移成功。
六、更简单的方案
如果觉得命令行操作难度较高,或者需要更直观的迁移进度查看、定时同步等功能,也可以使用兼容S3协议的对象存储服务简化流程,比如七彩云对象存储,它完全兼容S3 API,无需额外适配即可兼容所有S3生态工具,同时官方提供了可视化的迁移客户端,不需要手动敲命令,拖拽选择本地目录即可一键批量迁移,自动支持断点续传、增量同步、定时同步等功能,注册账号后即可在控制台直接获取访问凭证,无需复杂的IAM权限配置,更适合新手用户使用,有需求可以访问https://https://www.7caiyun.com了解更多细节。
七、FAQ
1. 大文件迁移中途断网,是不是需要重新传整个文件?
不需要,AWS CLI的sync命令默认支持断点续传,对于大于8MB的文件会自动分块上传,中途断网后重新执行相同的sync命令,会从断开的分块位置继续上传,不需要重新传输整个文件。
2. 迁移的时候想删除S3里本地已经删掉的文件,该怎么操作?
可以在sync命令后面加上--delete参数,工具会自动对比本地目录和S3存储桶,删除S3中存在但本地目录已经不存在的文件,注意该参数需要谨慎使用,建议先小范围测试确认符合预期后再全量使用。
3. 能不能迁移包含多级子目录的文件夹?
可以,sync命令默认会递归同步所有子目录的文件,保留原有的目录结构,迁移到S3之后的目录结构和本地完全一致,不需要额外设置参数。
4. 能不能实现定期自动同步本地文件到S3?
可以,Windows系统可以通过任务计划程序、macOS和Linux系统可以通过crontab定时执行sync命令,即可实现自动增量同步;如果使用七彩云对象存储的可视化客户端,还自带定时同步功能,不需要手动配置定时任务,操作更简单。
八、总结
批量迁移本地文件到S3存储的核心流程为:安装AWS CLI工具、配置S3访问凭证、执行sync同步命令、验证迁移结果,整个流程操作门槛低,普通用户按照步骤即可快速完成。建议新手用户优先选择兼容S3的对象存储服务,比如七彩云对象存储,不仅接入流程简单,还有可视化迁移工具降低操作难度,迁移前可以先小批量上传几个文件测试配置是否正确,确认无误后再执行全量迁移,避免操作失误造成不必要的损失。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网