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. PCIe诞生20年来最大变革!引入光学传输

    PCI-SIG组织官方宣布,已经成立新的光学工作组(Optical Workgroup),研究为PCIe规范引入光学传输接口的可能性. PCIe标准是Intel 2001年提出的,2003年发布1.0 ...

  2. Redis有哪些潜在的慢操作?

    Redis作为内存数据库,访问速度快是最大的特点,那么,什么情况下,Redis也会变慢呢? Redis底层数据结构 Redis有5种基本数据类型:String,List,Hash,Set,ZSet 有 ...

  3. CH59X/CH58X/CH57X sleep模式下串口唤醒收发数据

    整体程序逻辑: 下方的具体程序及使用是基于CH592进行的 SLEEP模式睡眠唤醒是由协议栈管理的,还在睡眠时,无法接收到数据. 已经通过使能HAL_SLEEP开启睡眠.如果需要在睡眠时实时接收串口传 ...

  4. 数学和CNN里面的卷积和互相关

    卷积和互相关 nndl上CNN这章的互相关讲的比较晦涩,简单辨析一下书上的互相关 A.1 数学意义上的卷积就是将卷积核进行翻转之后再进行我们熟悉CNN上的卷积运算 同时互相关就是不将卷积核翻转直接CN ...

  5. Flutter聊天室|dart+flutter仿微信App界面|flutter聊天实例

    一.项目概述 flutter-chatroom是采用基于flutter+dart+chewie+image_picker+photo_view等技术跨端开发仿微信app界面聊天室项目.实现了消息发送/ ...

  6. 高精度模板 大数减大数 可变数组vector实现

    vector<int> Sub(vector<int>& A, vector<int>& B)//这里默认长数减去短数 { vector<in ...

  7. [Ngbatis源码学习][Spring] Spring 的资源管理 ResourceLoader

    在学习Ngbatis的源码时,看到了有关xml文件的加载,涉及到了资源的加载,对相关知识进行总结与整理. 1. 相关类 Resource AbstractResource ResourceLoader ...

  8. Pandas处理股票数据

    import tushare as ts import pandas as pd # 下载茅台所有股票交易数据 # df = ts.get_k_data(code="600519" ...

  9. 竞态问题与RxJs

    竞态问题与RxJs 竞态问题通常指的是在多线程的编程中,输入了相同的条件,但是会输出不确定的结果的情况.虽然Js是单线程语言,但由于引入了异步编程,所以也会存在竞态的问题,而使用RxJs通常就可以解决 ...

  10. SpringBoot中Redis的基础使用

    基础使用 首先引入依赖 <!-- redis依赖--> <dependency> <groupId>org.springframework.boot</gro ...