0
sftp/mgetが実際にファイルを取得するかどうかを調べる最も簡単な方法は何ですか?mgetでダウンロードしたファイルの数を確認する方法は?
私の現在のスクリプトは次のようになります。
sftp ${SFTP_USER}@${SFTP_SERVER} <<EOF
cd ${SFTP_SOURCE_DIR}
mget ${FILEPATTERN}* ${AL_FTP_DIR}
bye
EOF
しかし、ファイルパターンに一致するファイルがない場合は、テスト中に、エラーが返されず、スクリプトが穏やかに気づいていないのに運びます。
$ {FILEPATTERN} *と一致するファイルが既にカレントディレクトリにあると仮定します... mgetが実際に何かを引っ張ったかどうかをどのように確認できますか?
解決策のための私の最高の考えは、一時的なディレクトリを使用することです...チェックして移動... shrug ..しかし、私はそこにもっと洗練されたソリューションがあると思いますか?
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
うーん、私は当初による実行中の並列ジョブに、しかし、私はもっとそれについて考えて、ええ、これはうまくいく、並列ジョブは、異なるファイルパターンで動作することを却下していた:)だから私はできましたこのトリックを使用して...私は一時ディレクトリを保存すると思います...ありがとう! – Ditto