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的更多相关文章

  1. shell 和python 实现ftp文件上传或者下载

    一.shell脚本 #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 172.168.1 ...

  2. Java实现FTP文件上传与下载

    实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1.通过JDK自带的API实现:2.通过Apache提供的API是实现. 第一种方式 package com.cl ...

  3. java/struts/Servlet文件下载与ftp文件上传下载

    1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!download ...

  4. Python 基于Python实现Ftp文件上传,下载

    基于Python实现Ftp文件上传,下载   by:授客 QQ:1033553122 测试环境: Ftp客户端:Windows平台 Ftp服务器:Linux平台 Python版本:Python 2.7 ...

  5. 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传

    在基于SqlSugar的开发框架的服务层中处理文件上传的时候,我们一般有两种处理方式,一种是常规的把文件存储在本地文件系统中,一种是通过FTP方式存储到指定的FTP服务器上.这种处理应该由程序进行配置 ...

  6. FTP文件上传并支持断点续传(一)—— win10 本地环境 ftp站点构建

    由于之前项目开发是采用是采用的FTP文件上传,就一直想学习,但由于FTP服务器是公司的,为了方便就像把本地变成ftp站点,其实很简单,但也有很多坑 这里简单介绍一下自己遇到的坑 一:开通本地的ftp权 ...

  7. Java下载https文件上传到阿里云oss服务器

    Java下载https文件上传到阿里云oss服务器 今天做了一个从Https链接中下载音频并且上传到OSS服务器,记录一下希望大家也少走弯路. 一共两个类: 1 .实现自己的证书信任管理器类 /** ...

  8. Java使用comms-net jar包完成ftp文件上传进度的检测功能

    本文章只讲述大致的思路与本次功能对应的一些开发环境,具体实现请结合自己的开发情况,仅供参考,如果有不对的地方,欢迎大家指出! 准备环境:JDK1.7 OR 1.8.eclipse.ftp服务器(可自行 ...

  9. ftp文件上传下载命令

    介绍:从本地以用户wasqry登录的机器1*.1**.21.67上通过ftp远程登录到ftp服务器上,登录用户名是lte****,以下为使用该连接做的实验.  查看远程ftp服务器上用户lte**** ...

  10. 【FTP】FTP文件上传下载-支持断点续传

    Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...

随机推荐

  1. 【OpenCV】在Linux上使用OpenCvSharp

    前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Androi ...

  2. iOS 17.4 测试版包含大模型相关代码

    外界普遍预计苹果将在 6 月份通过 iOS 18 推出主要的新人工智能功能.不过根据 9to5Mac 的报道,他们在 iOS 17.4 第一个测试版中发现的代码表明,苹果正在开发由大语言模型技术支持的 ...

  3. .net 工具箱不可用/怎样初始化vs环境 解决方案

    在开始菜单里面执行的.开始菜单->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 命令提示 ...

  4. zblog文章采集发布插件-免费下载

    推荐一款可以自动采集网页文章,并发布到zblog系统网站的zblog采集发布插件,支持简数采集器,火车头数据采集器,八爪鱼文章采集器,后羿采集器等...... zblog采集发布插件使用教程如下: 1 ...

  5. 【栈和队列】纯C实现栈和队列以及其基本操作-宝藏级别数据结构教程【保姆级别详细教学】

    [栈和队列]栈和队列的C语言实现-宝藏级别数据结构教程-超详细的注释和解释 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记 ...

  6. NC19987 [HAOI2012]ROAD

    题目链接 题目 题目描述 C国有n座城市,城市之间通过m条单向道路连接.一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小.两条最短路不同,当且仅当它们包含的道路序列不同. ...

  7. NC16810 [NOIP1999]拦截导弹

    题目链接 题目 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达 ...

  8. Java线程状态(生命周期)--一篇入魂

    1.线程状态(生命周期) 一个线程在给定的时间点只能处于一种状态. 线程可以有如下6 种状态: New (新创建):未启动的线程: Runnable (可运行):可运行的线程,需要等待操作系统资源: ...

  9. Android上的日志

    Android的日志机制和普通的Java项目有一些不一样, 这里记录一下 安卓内建的Log 安卓应用类型(在build.gradle里定义 android {...})的模块, 可以直接引用内建的an ...

  10. 【Unity3D】激光灯、碰撞特效

    1 需求描述 ​ 本文将模拟激光灯(或碰撞)特效,详细需求如下: 从鼠标位置发射屏幕射线,检测是否与物体发生碰撞 当与物体发生碰撞时,在物体表面覆盖一层激光灯(或碰撞)特效 ​ 本文代码见→激光灯.碰 ...