如何使 wget 更快或支持多线程?

如何使 wget 更快或支持多线程?

我刚刚升级了电脑硬件(cpu + 主板 + 显卡 + 内存 + 硬盘),所以需要安装新的操作系统。我尝试debian-6.0.6-amd64-netinst.iso使用wget命令但是速度实在是太慢了我无法忍受,4Kb/s ~ 17 Kb/s慢得像一只奔跑的乌龟,如果我使用Chrome的话就更慢了。

我已阅读帮助信息获得,似乎没有选项可以使它更快。

有什么办法吗获得更快吗?或者有可能让它多线程下载?

PS:我的带宽是4M,我使用这个命令:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso

答案1

为什么不尝试一下axel?这是一个功能齐全的基于命令行的下载程序。

安装axel并生成下载

axel -a -n [Num_of_Thread] link1 link2 link3 ...

其中,'[Num_of_Thread]'是要下载的每个链接所要创建的并行连接数。

-a仅显示改进的进度条。

与许多其他下载管理器不同,Axel 使用单个线程将所有数据直接下载到目标文件。这样可以节省一些时间,因为程序不必连接所有下载的部分。

答案2

axel试过居夫兰的推荐,但它让我大失所望。我的目标是找到一个 CLI 替代品,因为DownThemAll它占用 CPU 和硬盘,即使在 8 核 Mac Pro 上也会降低整个系统的速度。我还想要一个多线程替代品wgetcurl,而不是一些运行多个实例的脚本。所以我进一步搜索,找到了我认为目前最先进的多线程 CLI 下载器——aria2。我遇到的最大问题axel是它“伪造”了通过 SSL 下载文件的过程。我发现它在使用 时这样做tcdump。它将https链接下载为普通的http。这真的让我很生气,如果我不检查的话,我会有一种虚假的安全感。我认为没有多少人知道这个严重的安全漏洞。回到aria2,它比任何其他下载器都先进。它支持 HTTP(S)、FTP、BitTorrent 和 Metalink 协议,是多平台的,并且是一个下载游击程序。与 DTA 不同,它可以最大限度地利用我 ISP 的带宽,而不会对 CPU 或硬盘造成任何负载。手册页非常长。我绝不会使用它的众多选项中的几个。哦,顺便说一句,我用 检查了它的 SSL 性能,tcdump它很稳定,不是假的。我编写了一个脚本来模仿 DTA 的行为,如果不是它的便利性的话。

我用来获取最大带宽的基本命令是

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-c如果中断则允许继续下载,-x 10并且-s 10每个服务器最多允许 10 个连接,并将-d "mydir"文件输出到目录mydir

aria2files.sh

#!/bin/bash

filename="$1" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

它读取以下格式的文本文件:

files.txt

dierctory 1
url1
url2
directory 2/subdirectory/sub-subdirectory/…
url3
url4

该脚本从命令行读取文件名:

aria2files.sh files.txt

它创建目录并下载到其中。它可以创建嵌套目录,如第二个示例所示。

欲了解更多详情,请参阅我的帖子Bash 脚本用于将文件从 URL 下载到文本文件中列出的指定目录

相关内容