我一直试图通过FTP服务器移动一些文件来解决相对较小的问题,但到目前为止还没有运气。
简而言之,这就是我正在做的事情,我有三台服务器:
SourceSFTP TargetSFTP Target_2_SFTP
该脚本应该执行以下操作
问题发生在postfunc内部我再次调用lftp将文件传输到Target_2SFTP。命令执行正常(我可以看到文件被移动)但是数字5从未发生过。
这是我的脚本:
function postfunc() {
the_file=$1
lftp<<END_SCRIPT2
open sftp://$Target2SFTP
user $USERNAME $PASSWORD
cd /root
put $the_file
bye
END_SCRIPT2
}
echo "Downloading files from $SOURCE_SFTP"
lftp -e "echo 'testing connection';exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP
lftp -e "set xfer:clobber true;mget $SOURCE_DIR*.csv;exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP || exit 0
files=(*.csv)
batch=10
for ((i=0; i < ${#files[@]}; i+=batch)); do
commands=""
# Do some stuff
for((j=0; j < batch; j+=1)); do
commands=$commands"mv source_dir/${files[i+j} archivedir/${files[i+j]};"
postfunc ${files[i]}
done
echo "Archiving batch..."
lftp -e "$commands;exit" -u $SOURCE_USERNAME,$SOURCE_PASSWORD $SOURCE_SFTP
lftp<<END_SCRIPT
open sftp://$TARGET_SFTP
user $TARGET_USERNAME $TARGET_PASSWORD
cd $TARGET_DIR
mput dirr/*
bye
END_SCRIPT
done
希望我错过了一些明显的东西......目前即使我移动了一个文件&#34;归档批次&#34;永远不会出现,如果我删除postfunc()的内容,一切都正确执行