Shell脚本自动下载FTP文件上传到S3
2023-11-16 11:22 假面Wilson 阅读(247) 评论(0) 编辑 收藏 举报1. shell脚本下载
#!/bin/bash #用户名 USER=xxx #密码 PASSWORD=xxx #下载文件临时目录 SRCTDIR=/approveform/uat/tempin #S3获取文件目录 SRCDIR=/approveform/uat/in #S3获取文件日志 SRCLOG="/approveform/uat/log/`date +%Y%m%d`.log" #FTP目录(待下载文件目录) DESDIR=/LIGHTNING/OUT/OAF #FTP归档目录 MESDIR=/LIGHTNING/OUT/OAF/ARCHIVE #IP IP=xxxx #端口 PORT=22 echo "`date +%F%T`下载FTP文件开始" >> ${SRCLOG} 2>&1 #下载到临时目录 lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT}<<EOF #mkdir ${MESDIR} cd ${DESDIR} lcd ${SRCTDIR} #hash #prompt off mget -c * close bye EOF echo "`date +%F%T`下载FTP文件结束" >> ${SRCLOG} 2>&1 echo "`date +%F%T`移动文件开始" >> ${SRCLOG} 2>&1 #遍历临时目录, #cd ${SRCTDIR} for file in `ls ${SRCTDIR}` do lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT}<<EOF #移动FTP文件到归档目录 mv ${DESDIR}/${file} ${MESDIR}/${file} bye EOF #移动文件到S3获取目录 mv ${SRCTDIR}/${file} ${SRCDIR} done echo "`date +%F%T`移动文件结束" >> ${SRCLOG} 2>&1
2. 上传S3
#!/bin/bash #待上传的文件目录 SRCDIR=/approveform/uat/in #已上传存档的文件目录-年 DESDIRY="/approveform/uat/archive/`date +%Y`" #已上传存档的文件目录-年/月 DESDIRYM="/approveform/uat/archive/`date +%Y`/`date +%Y%m`" #已上传存档的文件目录-年/月/日时 DESDIRYMDH="/approveform/uat/archive/`date +%Y`/`date +%Y%m`/`date +%Y%m%d%H`" #上传的S3目录 S3DIR=s3://xxxx/ApproveForm/IN/ #S3获取文件日志 SRCLOG="/approveform/uat/log/`date +%Y%m%d`.log" echo "`date +%F%T`上传文件到S3开始" >> ${SRCLOG} 2>&1 if [ -d ${DESDIRY} ];then echo "年文件夹存在" >> ${SRCLOG} else mkdir ${DESDIRY} fi if [ -d ${DESDIRYM} ];then echo "年月文件夹存在" >> ${SRCLOG} else mkdir ${DESDIRYM} fi if [ -d ${DESDIRYMDH} ];then echo "年月日时文件夹存在" >> ${SRCLOG} else mkdir ${DESDIRYMDH} fi cd ${SRCDIR} for file in `ls ${SRCDIR}` do /usr/local/bin/aws s3 cp ${file} ${S3DIR} mv ${file} ${DESDIRYMDH} done echo "`date +%F%T`上传文件到S3结束" >> ${SRCLOG} 2>&1
3. 设置Crontab
#启动服务
/sbin/service crond start
#关闭服务
/sbin/service crond stop
#重启服务
/sbin/service crond restart
#重新载入配置
/sbin/service crond reload
#检查状态
systemctl status crond
# 对Crontab进行授权
chmod 600 /var/spool/cron/{username}
# 查看日志
tail -f /var/log/cron
#aws command not found
which aws # 获取aws路径,加入/etc/crontab 的 PATH后重启cron服务,如果不行就直接用路径替换脚本的aws
# /bin/sh: awss3.sh Permission denied
chmod +x awss3.sh
#打开定时器编辑器
crontab -e
#增加以下文本
#每小时执行下载文件
0 */1 * * * /approveform/uat/sftp.sh >> /approveform/uat/log/cronlog.log 2>&1 & echo $(date +"\%Y\%m\%d_\%H:\%M")"执行下载文件Job" >> /approveform/uat/log/cronlog.log 2>&1
#每30分执行上传文件到S3
*/30 * * * * /approveform/uat/awss3.sh & echo $(date +"\%Y\%m\%d_\%H:\%M")"执行上传S3文件Job" >> /approveform/uat/log/cronlog.log 2>&1
#每分钟测试定时器有没有执行
*/1 * * * * echo $(date +"\%Y\%m\%d_\%H:\%M")"定时器每分钟执行Job" >> /approveform/uat/log/cronlog.log 2>&1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2012-11-16 上传图片时,CMKY转RGB
2010-11-16 关于Reporting Services的Q&A