那么,检查sftp / mget是否实际提取文件的最简单方法是什么?
我当前的脚本如下:
sftp ${SFTP_USER}@${SFTP_SERVER} <<EOF
cd ${SFTP_SOURCE_DIR}
mget ${FILEPATTERN}* ${AL_FTP_DIR}
bye
EOF但是,在测试期间,如果没有与文件模式匹配的文件,则不会返回错误,并且脚本将在不知情的情况下继续运行。
假设我已经可以在匹配${FILEPATTERN}*的当前目录中拥有文件。我怎么才能知道那个小女孩是否真的拉了什么东西?
我最好的解决办法是使用临时目录..。检查然后移动..。耸耸肩。但我想一定要有一个更优雅的解决方案?
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发布于 2016-11-07 19:06:51
# 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"https://stackoverflow.com/questions/40472067
复制相似问题