如何使用AWS CLI复制文件夹到S3并追加日期时间戳
如何复制文件夹到S3并追加时间戳避免覆盖
这问题我之前处理过好几次,其实用简单的命令组合就能轻松实现,核心就是先生成带唯一时间戳的目标路径,再执行S3复制操作,具体分两种环境给你说明:
Linux/macOS(Shell环境)
先定义好源文件夹、S3桶路径,然后生成时间戳拼接成目标路径,最后执行复制:
# 替换成你的源文件夹实际路径 SOURCE_FOLDER="./sourcefolder" # 替换成你的S3桶基础路径 S3_BASE_PATH="s3://somebucket-test-bucket/" # 生成时间戳,格式为YYYYMMDD-HHMMSS(可自定义) TIMESTAMP=$(date +"%Y%m%d-%H%M%S") # 拼接完整的S3目标路径,自动带上时间戳后缀 TARGET_S3_PATH="${S3_BASE_PATH}sourcefolder-${TIMESTAMP}/" # 执行递归复制 aws s3 cp "$SOURCE_FOLDER" "$TARGET_S3_PATH" --recursive
执行后,你在S3桶里看到的文件夹就会是类似 sourcefolder-20240520-143522 这样的名称,完全不用担心被覆盖。
小提示:自定义时间戳格式
如果觉得默认格式不符合需求,你可以修改date命令的参数,比如想改成YYYY-MM-DD_HH-MM-SS的格式,就把date +"%Y%m%d-%H%M%S"改成date +"%Y-%m-%d_%H-%M-%S",只要是S3路径允许的字符都可以用。
Windows(PowerShell环境)
如果是在Windows下用PowerShell操作,命令稍微调整一下:
# 替换成你的源文件夹路径 $sourceFolder = ".\sourcefolder" # 替换成你的S3桶基础路径 $s3BasePath = "s3://somebucket-test-bucket/" # 生成时间戳 $timestamp = Get-Date -Format "yyyyMMdd-HHmmss" # 拼接目标路径 $targetS3Path = "${s3BasePath}sourcefolder-${timestamp}/" # 执行复制 aws s3 cp $sourceFolder $targetS3Path --recursive
这样同样能生成带时间戳的唯一文件夹名称。
内容的提问来源于stack exchange,提问作者Spocktador
相关产品推荐
相关产品推荐

