shell調用ftp(sftp)實現自動批量上傳(下載)

    最近項目須要自動FTP批量上傳文件或下載文件。最快的完成方式就是在shell裏調用相關的命令,並用crontab調用shell腳本實現週期性FTP批理處理。
html

    當前流行的FTP分爲 ftp vs sftp,關於這兩者的的樣例各舉一個。shell

    注意:在編寫shell腳本時須要特別注意腳本格式是windows or unix,由於換行符會引出一些莫名的錯誤。
windows

1:ftp
bash

    參考:http://blog.chinaunix.net/uid-20526681-id-3549245.html服務器

  1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)  ui

  2. ftp -niv <<- EOF  spa

  3. open IP_ADDRESS  .net

  4. user USERNAME PASSWORD  unix

  5. ascii(or bin)  code

  6. put *(or get)  

  7. bye  

  8. 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 <<- EOF  
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 <<EOF or lftp -e "put theFile; quit" -u username,password sftp://remotehost
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} <<EOF 
cd ${DESDIR}/
lcd ${DIR}
put ${FILE} 
by
EOF

done


參考

相關文章
相關標籤/搜索