代码之家  ›  专栏  ›  技术社区  ›  markwatson

通过wget从ssh上的bash文件下载超过100000个文件有多可靠?

  •  0
  • markwatson  · 技术社区  · 16 年前

    我有一个包含wget命令的bash文件,可以下载超过100000个文件,总计大约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

    这其中有114770行。在我有帐户的服务器上使用ssh并运行它有多可靠?我的ssh会话最终会超时吗?我会一直被嘘吗?如果我的本地计算机崩溃/关机怎么办?

    还有,有人知道这需要多少资源吗?我想在共享服务器上这样做吗?

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

    7 回复  |  直到 15 年前
        1
  •  4
  •   M.N    16 年前

    使用

    #nohup./脚本名>logname.log

    这将确保

    • 即使ssh会话中断,进程也将继续。
    • 你可以监视它,因为它正在运行

    也会建议,你可以有一些定期的提示,将有利于日志分析。例如 #echo "1000 files copied"


    就资源利用而言,它完全取决于系统,主要取决于网络特性。理论上,您可以只用数据大小和带宽来计算时间。但在现实生活中,延迟、延迟和数据丢失会出现。

    所以做一些假设,做一些数学,你会得到答案的:)

        2
  •  1
  •   Mehrdad Afshari    16 年前

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

    你可以使用 screen 在您断开与远程计算机的连接时使其保持运行。

        3
  •  0
  •   Thilo    16 年前

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

    您还需要某种进度指示器,例如记录每个下载文件的日志文件,以及所有错误消息。nohup将stderr和stdout发送到文件中。 有了这样一个文件,您就可以获取中断的下载并在稍后中止运行。

    首先对它进行一次测试运行,使用一组小文件,看看您是否下载了命令并喜欢输出。

        4
  •  0
  •   slim    16 年前

    我建议你用 nohup .

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

    脚本将运行到完成-您不需要全程登录。

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

        5
  •  0
  •   schnaader    16 年前

    如果可能的话,为所有文件生成MD5校验和,并使用它检查所有文件是否正确传输。

        6
  •  0
  •   Jonas Elfström    16 年前

    启动它

    nohup ./scriptname &
    

    你应该没事的。 另外,我建议您记录进度,这样您就可以找到它停止的位置(如果停止的话)。

    wget url >>logfile.log
    

    可能足够了。

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

    tail -f logfile.log
    
        7
  •  0
  •   Joe Casadonte    15 年前

    也许值得一看替代技术,比如 rsync . 我已经在很多项目中使用过它,它非常非常好地工作。