通过ssh从bash文件中通过wget下载超过100,000个文件是多么可靠?

时间:2008-12-19 08:20:15

标签: ssh wget

我有一个包含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会议最终会超时吗?我是否必须在整个时间内受到影响?如果我的本地计算机崩溃/关闭怎么办?

此外,有谁知道这需要多少资源?我想在共享服务器上做这件事我很疯狂吗?

我知道这是一个奇怪的问题,只是想知道是否有人有任何想法。谢谢!

7 个答案:

答案 0 :(得分:4)

使用

#nohup ./scriptname&> logname.log

这将确保

  • 即使ssh会话中断,该过程仍将继续
  • 您可以监控它,因为它正在运作

还会建议,你可以定期提示,对日志分析有好处。例如#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。我已经在许多项目中使用它,它的工作非常非常好。