sftp 上傳下載指令碼
阿新 • • 發佈:2020-08-28
概述
因公司專案由之前的ftp換位sftp,且之前的UDP函式未開發出來,使用指令碼實現部分功能(sftp檔案下載)。一次連線和多次連線均為指定檔名下載,下載最新的檔案即下載修改時間最新的檔案,因每天最多更新一份,在下載最新檔案指令碼中以天為單位。指令碼內容如下。
一次連線
#!/bin/bash # -------------+--------------------------------- # * Filename : sftp_download_nowfile.sh # * Date : 2020-08-24 # * Author : wangjianxiong #View Code* Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` IP=59.255.188.30 PORT=5522 USER=ftpuser PASSWORD=!QAZ2wsx12345 SFTPDIR=/data/file/xy FILE_NAME=20200818.zip find $MYPWD/data -type f -name "*" -exec rm -rf {} \; [-f sftp_get.sh ] && rm -rf sftp_get.sh echo "lftp -u '${USER}','${PASSWORD}' sftp://${IP}:${PORT} <<EOF" >> sftp_get.sh cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i echo "cd $rpath" >> sftp_get.sh echo "lcd $lpath" >> sftp_get.sh echo "get $FILE_NAME" >> sftp_get.sh done echo "bye" >> sftp_get.sh echo "EOF" >> sftp_get.sh chmod a+x sftp_get.sh
多次連線
for迴圈實現
#!/bin/bash # -------------+--------------------------------- # * Filename : sftp_download_nowfile.sh # * Date : 2020-08-24 # * Author : wangjianxiong # * Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` IP=59.255.188.30 PORT=5522 USER=ftpuser PASSWORD=!QAZ2wsx12345 SFTPDIR=/data/file/xy FILE_NAME=20200818.zip find $MYPWD/data -type f -name "*" -exec rm -rf {} \; cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do sleep 1 lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i lftp -u '${USER}','${PASSWORD}' sftp://${IP}:${PORT} <<EOF cd $rpath lcd $lpath get $FILE_NAME bye EOF doneView Code
下載最新檔案
for 巢狀 while
#!/bin/bash # -------------+--------------------------------- # * Filename : lftp_get.sh # * Date : 2020-08-28 # * Author : wangjianxiong # * Description : # -------------+--------------------------------- MYPATH=$(dirname $0) MYPWD=`cd $MYPATH/../ && pwd` SFTPDIR=/data/file/xy find $MYPWD/data -type f -name "*" -exec rm -rf {} \; cat $MYPATH/../conf/list_dir | awk -F"." '{print $NF}' > new_list for i in `cat new_list` do lpath=`cd $MYPWD/data$i; pwd` rpath=$SFTPDIR$i i=0 while true do lftp -u 'ftpuser','!QAZ2wsx12345' sftp://59.255.188.30:5522 <<EOF mirror --newer-than='now-${i}day' --only-newer --verbose $rpath $lpath bye EOF ret=`ls $lpath` if [ "`ls -A $lpath`" = "" ]; then i=$(($i+1)) else break fi done doneView Code