如何让连接到SFTP打开,而其他bash命令运行

问题

我使用sshpass&scp从SFTP服务器上下载文件,但是我下载的文件很小,最终在短时间内发出了很多请求,服务器因为看起来很可疑而变慢。

是否有可能让SSH连接打开,而bash脚本下载初始文件,处理文件,然后移动到循环中的下一个文件?

有没有更好的方法来解决这个问题,铭记我卡在他们有坏的SFTP?

示例代码

while read i; do # i in this case, is the entire file path # so we can select the last part just_filepath=$(echo $i | awk -F "/" '{print $NF}') if sshpass -f ftp_pass.txt scp -r $ftp_user_address:$i "clients/$bq_dataset/"$just_filepath >> "debug/upload_dl_debug.log" 2>&1; then bash_log "successfully downloaded $just_filepath from FTP" else bash_log "failed to download $just_filepath from FTP" fi ... processExternalLogs $just_filepath ((x++)) done <ftp_file_list.txt 

背景

我有一个小的数字海洋服务器,用于处理日志,然后将它们提供给BigQuery进行分析。

由于服务器空间不大,所有处理的bash脚本逐一下载每个文件,对其进行处理,然后将其上传到BigQuery,然后删除文件,为将来的文件腾出空间。

客户的SFTP我现在必须与公共托pipe便宜,他们无法控制。

由于我下载的文件太小,处理速度很快,所以多次连接SFTP的尝试最终看起来很可疑(我猜),最终我的速度受到了限制。 剧本仍然有效,只是超级慢。

有太多的文件一次下载到我的DO盒,所以我想知道是否有一个聪明的方式,我可以让SFTP连接打开,而日志的处理运行。