我有一个包含wget命令的bash文件,可以下载超过100,000个文件,总共大约20GB的数据。
bash文件类似于:
wget http://something.com/path/to/file.data
wget http://something.com/path/to/file2.data
wget http://something.com/path/to/file3.data
wget http://something.com/path/to/file4.data
这里有114,770行。 ssh到服务器我有多可靠,我有一个帐户并运行它?我的ssh会议最终会超时吗?我是否必须在整个时间内受到影响?如果我的本地计算机崩溃/关闭怎么办?
此外,有谁知道这需要多少资源?我想在共享服务器上做这件事我很疯狂吗?
我知道这是一个奇怪的问题,只是想知道是否有人有任何想法。谢谢!
答案 0 :(得分:4)
使用强>
#nohup ./scriptname&> logname.log
这将确保
还会建议,你可以定期提示,对日志分析有好处。例如#echo "1000 files copied"
就资源利用而言,它完全取决于系统,主要取决于网络特征。从理论上讲,你可以通过数据大小和数据来调整时间。带宽。但在现实生活中,延迟,延迟和数据丢失就会出现。
所以做一些分数,做一些数学,你会得到答案:)
答案 1 :(得分:1)
取决于通信介质,硬件的可靠性......!
当您与远程计算机断开连接时,可以使用screen
使其保持运行状态。
答案 2 :(得分:0)
以
开头nohup ./scriptname &
你应该没事。 此外,我建议您记录进度,以便能够找到它停止的位置。
wget url >>logfile.log
就足够了。
要监控进度,您可以:
tail -f logfile.log
答案 3 :(得分:0)
您希望断开脚本与shell的连接并使其在后台运行(使用nohup),以便在您注销时继续运行。
您还希望拥有某种进度指示器,例如记录下载的每个文件的日志文件以及所有错误消息。 Nohup将stderr和stdout发送到文件中。 使用这样的文件,您可以在以后获取损坏的下载和中止运行。
首先使用一小组文件给它一个测试运行,看看你是否得到了命令并且喜欢输出。
答案 4 :(得分:0)
我建议您使用nohup
将其与shell分离。
$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit
脚本将运行完成 - 您无需始终登录。
请检查您可以提供的任何选项,以便在失败时重试。
答案 5 :(得分:0)
如果可能,请为所有文件生成MD5校验和,并使用它来检查它们是否都已正确传输。
答案 6 :(得分:0)
查看替代技术可能是值得的,例如rsync。我已经在许多项目中使用它,它的工作非常非常好。