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(常 ...
随机推荐
- XXE注入详解
XML介绍 XML全称可扩展标记语言(EXtensible Markup Language),XML跟HTML格式类似,但是作用不同,XML侧重于数据传输,HTML注重于标记语言,也就是说XML其实是 ...
- C++界面库(十几种,很全)
C++界面库是用于GUI界面设计的工具包,可以帮助开发人员快速开发出美观.易用的界面.在选择C++界面库的时候,开发人员需要根据项目要求.使用场景.开发难易程度以及所适配的操作系统等因素进行综合考虑. ...
- 物联网浏览器(IoTBrowser)-MQTT协议集成和测试
一.简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议.它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情 ...
- 单片机 IAP 技术方案设计
1.前言 关于 IAP 技术,做过 bootloader 的想必很熟悉 (IAP全称 In Application Programming,即应用编程),和 ISP (全称 In System Pro ...
- 传统.NET应用向微服务架构迁移的实践经验--学习笔记
摘要 在本次分享中,演讲嘉宾将基于真实项目案例,剖析 .NET 应用向微服务..NET Core 等技术栈迁移的具体收益,并且分享在迁移中技术和非技术的众多考量.以及保证业务连续性的一些方法论. 议题 ...
- Linux-ln命令创建链接(软连接/硬链接)
1.ln命令介绍 ln命令可以看作是 link 的缩写,其功能是创建文件间的链接,链接类型包括硬链接(hard link)和软链接(符号链接,symbolic link) 2.ln命令格式 ln 命令 ...
- 如何查看Linux 内核是AMD、arm
如何查看Ubuntu的内核是AMD.ARM.x86.x86_64 $ arch 注:x86_64,x64,AMD64基本上是同一个东西
- 对称加密算法汇总:AES DES 3DES SM4 java 实现入门
密码的世界 如果你是黑帮老大,平时和手下沟通,如何保证自己的信息安全呢? 在神探夏洛克的第一季中,就讲述了一个如何侦破黑帮的加密交流的故事. 这种密码利用的是密码字典. 密码本身可以是一本书,比如常见 ...
- 内核5.4以上, Realtek 8111网卡初始化失败
在Centos7中, 升级内核到5.4.x或5.11.x时, 都会出现realtek8111网卡无法启动的问题, 在dmesg中能看到这个错误 $ dmesg |grep -i r8169 ... r ...
- Frogger题解
Frogger 法一:floyd #include<iostream> #include<cstring> #include<algorithm> #include ...