You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI读取文本文件中的文件列表批量上传至S3?

AWS S3 基于指定文件列表批量上传方案

你可以通过xargs(Linux/macOS)或PowerShell管道的方式实现需求,无需手动编写遍历逻辑,仅依赖你准备好的files_to_upload.txt即可完成批量上传。

方案1:Linux/macOS 环境

基础批量上传(保留本地目录结构)

直接通过xargs读取文件列表内容,自动填充到aws cli的cp命令中:

xargs -a files_to_upload.txt -I {} aws s3 --follow-symlinks cp {} s3://<你的桶名>/<目标前缀>/{}

参数说明:

  • -a files_to_upload.txt:指定从目标文本文件读取待处理内容
  • -I {}:将文件每行的路径内容替换到后续命令的{}位置

如果需要将所有文件上传到S3的同一个目录,不需要保留本地路径结构,可以改用以下命令:

xargs -a files_to_upload.txt -I {} aws s3 --follow-symlinks cp {} s3://<你的桶名>/<目标目录>/$(basename {})

大文件量加速上传

如果待上传文件数量较多,可以添加-P参数开启并行上传,示例为同时启动10个上传任务:

xargs -a files_to_upload.txt -P 10 -I {} aws s3 --follow-symlinks cp {} s3://<你的桶名>/<目标前缀>/

路径含空格兼容方案

如果你的文件路径中包含空格,需要指定换行符为唯一分隔符,避免xargs错误拆分参数:

xargs -d '\n' -a files_to_upload.txt -I {} aws s3 --follow-symlinks cp {} s3://<你的桶名>/<目标前缀>/

方案2:Windows PowerShell 环境

PowerShell下通过管道读取文件内容逐行处理,无需手动写循环:

Get-Content files_to_upload.txt | ForEach-Object { aws s3 --follow-symlinks cp $_ s3://<你的桶名>/<目标前缀>/$_ }

通用注意事项

  • 执行前可以添加--dryrun参数测试命令,只会打印待执行的上传操作不会真实上传,确认路径符合预期后再去掉该参数执行,比如:
    xargs -a files_to_upload.txt -I {} aws s3 --follow-symlinks cp --dryrun {} s3://<你的桶名>/<目标前缀>/
    
  • files_to_upload.txt中的路径建议使用执行命令所在工作目录的相对路径,或者写完整绝对路径,避免出现文件找不到的错误。

可选补充:统一规则文件批量上传

如果你的待上传文件有统一的路径/命名规则,也可以直接用s3 sync的过滤参数实现,无需准备文件列表。比如要上传所有.log后缀的文件,忽略其他文件:

aws s3 sync ./ s3://<你的桶名>/<目标前缀>/ --exclude "*" --include "*.log"

内容的提问来源于stack exchange,提问作者Ahdee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:45:11