【问题标题】:How to download thirteen million small files faster with wget?如何使用 wget 更快地下载一千三百万个小文件?
【发布时间】:2016-02-02 12:35:36
【问题描述】:

我有一个文件列表,共有 1300 万个文件,大约 140GB。 注意:需要维护目录结构。每个文件大约 100KB-2MB。

我使用wget -x -i file_list.txt

这是可行的,但太慢了。

注意:所有都是文件列表中的 url。

我的服务器有 100M 的带宽,应该是 10M/s 的速度。 但是wget -x -i file_list.txt 给我 1M/s。

如何解决?

【问题讨论】:

  • 可能远程服务器给你的速度不超过 1M/s?探戈需要两个人。

标签: http download wget


【解决方案1】:

你可以使用并行命令:

parallel -a websites.txt --jobs 20 'wget -x'

用 -a 从文件中读取每一行,--jobs 表示要并行运行多少行,wget 将在文件的下一行后缀。

【讨论】:

    【解决方案2】:

    您可以使用以下标志同时启动 wget 多次:

    wget -x -N -i file_list.txt &
    wget -x -N -i file_list.txt &
    wget -x -N -i file_list.txt ...
    

    N 标志代表:

    -N,  --timestamping              don't re-retrieve files unless newer than
    

    如果还是遇到问题,可以试试 -r / -np:multiple wget -r a site simultaneously?

    【讨论】:

    • 你可以混合 jason 和我的解决方案。比如“parallel -a website.txt --jobs 20 'wget -x -N'”
    【解决方案3】:

    您可以通过创建多个 wget 实例来提高性能。您可以使用 for 循环来执行此操作,但如果远程服务器以 1Mbps 的速度提供服务,那么您将被困在该速度上。

    结帐Parallel wget in Bash 了解有关创建多个下载的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      相关资源
      最近更新 更多