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

SFTP下载文件按名称分类移动到S3桶自定义路径问题求助

脚本问题分析及修改方案

你现有脚本的核心问题是aws s3 cp的过滤规则没有和当前循环的目标前缀绑定,两次循环分别往FOO和BAR路径传文件时,都只筛选了所有.csv后缀的文件,没有额外限定文件名开头,所以所有csv都会被同时传到两个路径里。另外脚本中还存在未定义变量LOCAL_PREFIX的问题,该变量在现有逻辑中没有用到,可以直接删除。

修改建议

原有SFTP下载逻辑无需调整,核心修改S3上传部分的逻辑,给每个循环的--include规则加上对应前缀匹配即可。

修改后的完整脚本

#!/usr/bin/env bash
SFTP="sftp user@sftpserver"
FOLDER="/data"
TARGET="/home/completed"
DEST="FOO BAR"
S3_PREFIX="s3://bucket_name/test/"

# 拉取SFTP文件列表
FILES=`$SFTP <<EOF
cd $FOLDER
ls
EOF`
FILES=`echo $FILES|sed "s/.*sftp> ls//"` 

# 批量下载文件到本地目录
(
 echo cd $FOLDER
 for F in $FILES; do
   echo get $F $TARGET
 done
) | $SFTP

# 按前缀分类上传到S3
for dest in $DEST; do
 aws s3 cp $TARGET $S3_PREFIX/$dest --recursive --exclude "*" --include "${dest}_*.csv"
done

说明

修改后循环里的--include "${dest}_*.csv"会精准匹配对应前缀的csv文件:循环到FOO时只会匹配FOO_开头的csv,循环到BAR时只会匹配BAR_开头的csv,不会出现重复上传的问题。如果后续需要新增其他前缀的分类,只需要在DEST变量里追加对应的前缀字符串即可,不需要修改其他逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:57:04