sftp shell 批量上传文件_shell调用ftp(sftp)实现自动批量上传(下载)

最近项目需要自动FTP批量上传文件或下载文件。最快的完成方式就是在shell里调用相关的命令,并用crontab调用shell脚本实现周期性FTP批理处理。

当前流行的FTP分为 ftp vs sftp,关于这二者的的样例各举一个。

注意:在编写shell脚本时需要特别注意脚本格式是windows or unix,因为换行符会引出一些莫名的错误。

1:ftp

参考:http://blog.chinaunix.net/uid-20526681-id-3549245.html

cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)

ftp -niv <

open IP_ADDRESS

user USERNAME PASSWORD

ascii(or bin)

put *(or get)

bye

EOF

#!/bin/bash

#=====================================================

#功能:自动生成脱机文件上,并将文件上传银联FTP服务器

#

#作者:mengfh

#日期:2014-05-07

#=====================================================

#########初始配置数据#################################

#SFTP配置信息

#用户名

USER=xxxxx

#密码

PASSWORD=xxxxxx

#待上传文件根目录

SRCDIR=${HOME}/run/data

#银联FTP目录

DESDIR=test

#银联IP

IP=192.168.1.120

#脱机消费文件成参数

#文件记录条数

LINE=1000

#文件生成清算日期(需要变更操作)

#DATE=20140507

DATE=`date +%Y%m%d`

#文件目录

DIR=${SRCDIR}/${DATE}

#######生成脱机文件##################################

#产生文件

offline ${DATE} ${LINE}

#######上传脱机文件##################################

#获取文件

cd ${DIR} ;

FILES=`ls`

for FILE in ${FILES}

do

echo ${FILE}

#发送文件(关键)

ftp -niv <

open ${IP}

user ${USER} ${PASSWORD}

cd ${DESDIR}/

put ${FILE}

bye

EOF

done

2:sftp

参考:http://seanliu.sa.blog.163.com/blog/static/102965911200910164850382/

#!/bin/bash

lftp -u user,password sftp://IP:Port <

cd direcory

lcd local directory

get file.gz

#put file.gz

by

EOF

#!/bin/bash

#=====================================================

#功能:自动生成脱机文件上,并将文件上传银联FTP服务器

#

#作者:mengfh

#日期:2014-05-07

#=====================================================

#########初始配置数据#################################

#SFTP配置信息

#用户名

USER=xxxx

#密码

PASSWORD=xxxxx

#待上传文件根目录

SRCDIR=${HOME}/run/data

#银联FTP目录

DESDIR=test

#银联IP

IP=192.168.1.120

#脱机消费文件成参数

#文件记录条数

LINE=1000

#文件生成清算日期(需要变更操作)

#DATE=20140507

DATE=`date +%Y%m%d`

#文件目录

DIR=${SRCDIR}/${DATE}

#######生成脱机文件##################################

#产生文件

offline ${DATE} ${LINE}

#######上传脱机文件##################################

#获取文件

cd ${DIR} ;

FILES=`ls`

for FILE in ${FILES}

do

echo ${FILE}

#发送文件 (关键部分)

lftp -u ${USER},${PASSWORD} sftp://${IP} <

cd ${DESDIR}/

lcd ${DIR}

put ${FILE}

by

EOF

done

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值