我正在尝试执行具有 mget*.*
以下载目录中所有文件的 bash 脚本。它正在下载 File1 中的几个文件,但它可能由于超时错误而跳过了 File2 部分。我相信这是由于超时错误,因为
1)我尝试对其他目录实施相同的操作,效果很好。可能是因为 File2 中的文件较少。
2)虽然我试图做命令行模式
sftp username@hostname
cd file2
mget *.*
响应至少需要 40 秒到 1 分钟,但它最终确实下载了所有文件。
所以,我猜在执行 bash 脚本时,它可能会因为超时而停止。请建议我解决方法。下面是我的 bash 脚本。
#test purpose only
#!/bin/bash
export Src_Dir=/path
File1=/path/*.*
File2=/path/Archive/*.*
DATE=`date +"%Y-%m-%d"`
Pass_Pwd='password'
PORT=22
cd "$Src_Dir" || { echo 'Failed to chdir into $Src_Dir' ; exit 0; }
/usr/bin/expect<<EOD
spawn /usr/bin/sftp -o Port=${PORT} username@host
expect "password:"
send "$Pass_Pwd\r"
expect "sftp>"
send "lcd ${Src_Dir}\r"
expect "sftp>"
send "mget ${File1}\r"
expect "sftp>"
send "mget ${File2}\r"
expect "sftp>"
send "bye\r"
EOD
echo "Download done"