Shell脚本自动下载FTP文件上传到S3
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
Shell脚本自动下载FTP文件上传到S3的更多相关文章
- shell 和python 实现ftp文件上传或者下载
一.shell脚本 #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 172.168.1 ...
- Java实现FTP文件上传与下载
实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...
- java/struts/Servlet文件下载与ftp文件上传下载
1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!download ...
- Python 基于Python实现Ftp文件上传,下载
基于Python实现Ftp文件上传,下载 by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...
- 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传
在基于SqlSugar的开发框架的服务层中处理文件上传的时候,我们一般有两种处理方式,一种是常规的把文件存储在本地文件系统中,一种是通过FTP方式存储到指定的FTP服务器上.这种处理应该由程序进行配置 ...
- FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建
由于之前项目开发是采用是采用的FTP文件上传,就一直想学习,但由于FTP服务器是公司的,为了方便就像把本地变成ftp站点,其实很简单,但也有很多坑 这里简单介绍一下自己遇到的坑 一:开通本地的ftp权 ...
- Java下载https文件上传到阿里云oss服务器
Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...
- Java使用comms-net jar包完成ftp文件上传进度的检测功能
本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...
- ftp文件上传下载命令
介绍:从本地以用户wasqry登录的机器1*.1**.21.67上通过ftp远程登录到ftp服务器上,登录用户名是lte****,以下为使用该连接做的实验. 查看远程ftp服务器上用户lte**** ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
随机推荐
- 时间工具类-Java
1.根据传入时间获取该时间所在季度的第一天 /** * 根据传入时间获取传入日期所在季度的第一天的日期 * * @param startDate * @return */ public static ...
- JDK8新特性Stream流操作
1 package stream; 2 3 import java.util.ArrayList; 4 import java.util.function.Function; 5 import jav ...
- ROS之交叉编译配置
参考资料: https://zhuanlan.zhihu.com/p/183819313 https://www.guyuehome.com/33759 1.原理 所谓的交叉编译,其实我们可以从编译原 ...
- 面试官:SpringCloudGateway过滤器类型有哪些?
在 Spring Cloud Gateway 中,过滤器是在请求到达目标服务之前或之后,执行某些特定操作的一种机制.例如,它可以实现对传入的请求进行验证.修改.日志记录.身份验证.流量控制等各种功能. ...
- CF678F Lena and Queries题解
题目链接:CF 或者 洛谷 可以看到查询和插入就是李超线段树的基本操作,但在原有基础上多了一个删除操作,李超线段树不支持删除操作,但支持可撤销和可持久化,所以我们容易想到外层再套一个线段树分治即可.本 ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ 业务场景详解)--学习笔记
2.6.5 RabbitMQ -- 业务场景详解 异步处理 应用解耦 流量削锋 日志处理 异步处理 串行方式 并行方式 异步方式 串行方式 _userRepo.Add(user); _emailSer ...
- .NET Core开发实战(第3课:.NET Core的现状、未来以及环境搭建)--学习笔记
03 | .NET Core的现状.未来以及环境搭建 .NET Core的现状 .NET Core 的应用场景:桌面端.Web端.云端.移动端.游戏.IOT 和 AI 云端指的是 .NET Core ...
- MySQL8 查询优化新工具 Explain Analyze
1.什么是Explain Analyze? Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估(并非实际的执行情况,可能与实际情况存在较大差距),给出很多有用的线索. Expl ...
- 竞态问题与RxJs
竞态问题与RxJs 竞态问题通常指的是在多线程的编程中,输入了相同的条件,但是会输出不确定的结果的情况.虽然Js是单线程语言,但由于引入了异步编程,所以也会存在竞态的问题,而使用RxJs通常就可以解决 ...
- SpringBoot整合Groovy脚本,实现动态编程
Groovy简介 Groovy 是增强 Java 平台的唯一的脚本语言.它提供了类似于 Java 的语法,内置映射(Map).列表(List).方法.类.闭包(closure)以及生成器.脚本语言不会 ...