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

参考


版权声明:本文为weixin_39874881原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。