linux - 由于超时错误,Bash 脚本中的 mget 无法正常工作,因为文件很大
问题描述
我正在尝试执行具有 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"
解决方案
我已经写了set timeout -1
上面的Spawn
命令,然后它完美地工作了:)
谢谢你们 :)
推荐阅读
- owl - 如何在 Protege 中添加多部分属性?
- java - Play Framework,绑定 Akka Typed actor,无需创建 Provider
- java - 为什么在评估调试对象时新的 FileInputStream 返回 null
- python - 根据第 0 个索引处的项目对 2D 嵌套列表进行排序
- java - 如何在 Java 中使用访问者模式模拟 Haskell 的模式匹配
- python - ValueError:error_score 必须是字符串“raise”或数值。(提示:如果使用“raise”,请确保拼写正确。)
- javascript - 如何在数组中找到对象?
- spring - Spring Boot + Apache CXF。仅发布带有注释的端点
- performance - 我们可以使用 Java 请求采样器进行大数据负载测试吗?
- node.js - 如何将 React App 客户端和 Node Server 部署到 cPanel