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

如何编写Bash脚本循环执行AWS S3跨桶年月同步命令?

实现S3指定年份的年月文件夹批量同步脚本

核心思路

通过Shell循环遍历指定年份的12个带前导零的月份,拼接成和你S3桶一致的年月文件夹名称,逐个执行aws s3 sync命令完成同步。

脚本示例

#!/bin/bash

# 设置要同步的目标年份,修改这个值就能切换不同年份
TARGET_YEAR="2022"

# 遍历01到12的月份(自动生成带前导零的格式)
for MONTH in {01..12}; do
    # 拼接成年月文件夹名,比如202201、202202
    FOLDER="${TARGET_YEAR}${MONTH}"
    # 打印同步进度提示(可选)
    echo "开始同步文件夹: ${FOLDER}"
    # 执行同步命令,源桶和目标桶的路径一一对应
    aws s3 sync "s3://bucket_one/${FOLDER}" "s3://bucket_two/${FOLDER}"
    # 如果想忽略不存在文件夹的错误,把上面一行改成:
    # aws s3 sync "s3://bucket_one/${FOLDER}" "s3://bucket_two/${FOLDER}" || true
done

关键部分说明

  • {01..12}:Shell的序列生成语法,直接生成01到12的带前导零字符串,完美匹配你的文件夹命名规则。
  • 变量拼接:${TARGET_YEAR}${MONTH}把年份和月份字符串拼在一起,得到完整的文件夹名。
  • aws s3 sync:这个命令会增量同步内容,只复制源文件夹中新增或修改的文件,比直接复制更高效。

注意事项

  • 确保你的AWS CLI已经配置好访问权限,能正常读写两个S3桶。
  • 如果某个月份的文件夹在源桶中不存在,默认会输出错误信息但继续执行后续循环;如果不想看到错误,就加上|| true忽略错误。
  • 可以根据需要调整TARGET_YEAR的值,比如改成2023就能同步2023年的所有月份文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:15:35