0

我有一个 bash 文件,其中包含 wget 命令来下载超过 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 会话最终会超时吗?我是否必须一直被 ssh'ed?如果我的本地计算机崩溃/关闭怎么办?

另外,有人知道这需要多少资源吗?我想在共享服务器上这样做是不是很疯狂?

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

4

7 回答 7

4

采用

#nohup ./scriptname &>logname.log

这将确保

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

Will also recommend, that you can have some prompt at regular intervals, will be good for log analysis. e.g. #echo "1000 files copied"


As far as resource utilisation is concerned, it entirely depends on the system and majorly on network characteristics. Theoretically you can callculate the time with just Data Size & Bandwidth. But in real life, delays, latencies, and data-losses come into picture.

So make some assuptions, do some mathematics and you'll get the answer :)

于 2008-12-19T08:29:40.173 回答
1

取决于通信介质、硬件、...的可靠性!

screen当您与远程计算机断开连接时,您可以使用它来保持它运行。

于 2008-12-19T08:23:28.093 回答
0

开始它

nohup ./scriptname &

你应该没事。另外,我建议您记录进度,以便您能够找出它停止的位置。

wget url >>logfile.log

可能就足够了。

要实时监控进度,您可以:

tail -f logfile.log
于 2008-12-19T08:23:33.727 回答
0

您想断开脚本与 shell 的连接并让它在后台运行(使用 nohup),以便在您注销时它继续运行。

您还希望有某种进度指示器,例如记录每个下载文件的日志文件,以及所有错误消息。Nohup 将 stderr 和 stdout 发送到文件中。使用这样的文件,您可以在以后获取损坏的下载和中止的运行。

首先用一小组文件对其进行测试运行,看看你是否得到了命令并喜欢输出。

于 2008-12-19T08:27:21.597 回答
0

我建议你用nohup.

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr &
$ exit

该脚本将运行完成 - 您无需始终登录。

请检查您可以为 wget 提供的任何选项,以使其在失败时重试。

于 2008-12-19T08:28:41.547 回答
0

If it is possible, generate MD5 checksums for all of the files and use it to check if they all were transferred correctly.

于 2008-12-19T08:30:00.123 回答
0

It may be worth it to look at an alternate technology, like rsync. I've used it on many projects and it works very, very well.

于 2009-03-02T15:29:39.613 回答