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

如何配置cron定时任务将S3指定文件夹按目录结构移动到EC2对应目录

实现S3指定目录定时同步到EC2的方案

问题原因

你原先使用的全局递归移动命令会同步S3存储桶根目录下的所有内容,若桶内新增其他非目标目录也会被同步到EC2,不符合仅同步folder1/folder2/folder3三个目录的需求。

实现方案

方案1:直接在cron中配置多命令

分别对三个目标目录执行移动操作,保证仅处理指定目录,结构完全对应:

*/5 * * * * /usr/bin/aws s3 mv s3://bucket/folder1/ /绝对路径/main/folder1/ --recursive && /usr/bin/aws s3 mv s3://bucket/folder2/ /绝对路径/main/folder2/ --recursive && /usr/bin/aws s3 mv s3://bucket/folder3/ /绝对路径/main/folder3/ --recursive

注意事项:

  • 请将/绝对路径/main/替换为EC2上main目录的实际绝对路径,可在main目录下执行pwd获取
  • aws命令的路径可通过EC2上执行which aws获取,替换为实际路径避免cron环境变量缺失找不到命令
  • 若不需要删除S3上的源文件,仅做增量同步,可将命令中的mv替换为sync

方案2:使用shell脚本封装(更易维护)

如果后续可能调整同步目录,建议封装为独立shell脚本,步骤如下:

  1. 新建sync_s3.sh脚本,内容如下:
#!/bin/bash
# 配置变量
S3_BUCKET="s3://bucket"
LOCAL_ROOT="/替换为实际的main目录绝对路径"
AWS_PATH="$(which aws)"

# 遍历同步目标目录
for target_dir in folder1 folder2 folder3
do
  ${AWS_PATH} s3 mv "${S3_BUCKET}/${target_dir}/" "${LOCAL_ROOT}/${target_dir}/" --recursive
done
  1. 给脚本添加执行权限:
chmod +x /path/to/sync_s3.sh
  1. 配置cron定时执行脚本:
*/5 * * * * /path/to/sync_s3.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:05