如何确认用mget下载的文件数量?

时间:2016-11-07 18:30:05

标签: unix sftp

那么检查sftp / 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 个答案:

答案 0 :(得分: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"