2016-11-07 103 views
0

那麼檢查sftp/mget是否實際拉取文件最簡單的方法是什麼?如何確認使用mget下載了多少個文件?

我現在的劇本是這樣的:

sftp ${SFTP_USER}@${SFTP_SERVER} <<EOF 
    cd ${SFTP_SOURCE_DIR} 
    mget ${FILEPATTERN}* ${AL_FTP_DIR} 
    bye 
    EOF 

但在測試過程中,如果沒有文件匹配文件模式,不會返回錯誤,並且腳本進行一無所知。

假設我已經可以在匹配$ {FILEPATTERN} *的當前目錄中存在文件了......如何判斷mget是否真的拉出了任何東西?

我最好考慮的解決方案是使用臨時目錄...檢查並移動... 聳肩 ..但我想這裏必須有一個更優雅的解決方案?

TDIR="AL_TMP_$$" 
    mkdir $TDIR 

    sftp ${SFTP_USER}@${SFTP_SERVER} <<EOF 
    cd ${SFTP_SOURCE_DIR} 
    mget ${FILEPATTERN}* ${AL_FTP_DIR}/${TDIR} 
    bye 
    EOF 

    CHKCNT=`ls -ltr $TDIR | wc -l` 

    if [ ${CHKCNT} -eq 1 ]; 
    then 
    echo "ERROR: No files found on FTP server." 
    rmdir $TDIR 
    exit 1 
    fi 
    mv $TDIR/* . 
    rmdir $TDIR 

回答

1
# count files before transfer 
files=("$AL_FTP_DIR"/*) 
n_before=${#files[@]} 

# transfer 
sftp ... 

# count files after transfer 
files=("$AL_FTP_DIR"/*) 
n_after=${#files[@]} 

diff=$((n_after - n_before)) 
echo "$diff files were transferred" 
+0

嗯,我最初否認的是,由於並行作業運行但是,因爲我認爲它更多的,是的,這會工作,並行作業在不同的文件模式工作:)所以我可以使用這個技巧...我想這可以節省臨時目錄...謝謝! – Ditto

相關問題