当前位置: 首页>>技术教程>>正文


downloads – 如何使wget更快或多线程?

, , ,

问题描述

我刚刚升级了计算机硬件(cpu +主板+图形卡+内存+硬盘),因此需要安装新的操作系统。我尝试使用wget命令下载debian-6.0.6-amd64-netinst.iso,但是速度太慢,以至于我无法忍受。 4Kb/s ~ 17 Kb/s,就像奔跑的乌龟一样慢,如果我使用Chrome,速度甚至会更慢。

我已经阅读了wget的帮助信息,似乎没有任何选择可以使它更快。

无论如何有使wget更快?还是可以下载multi-threading?

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

最佳方案

为什么不尝试axel?这是一个基于命令行的完整下载器。

安装axel并通过以下方式生成下载

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

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

-a只是显示了一个改进的进度栏。

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

次佳方案

我根据格弗兰的推荐尝试了axel,但这让我非常失望。我的目标是找到替代DownThemAll的CLI,因为即使在8核Mac Pro上,它也会占用CPU和硬盘并降低整个系统的速度。我还想要wgetcurl的多线程替代品,而不是运行多个此类实例的脚本的一些混用。因此,我进行了进一步搜索,发现我现在所认为的是最终的最现代的多线程CLI下载器​​-aria2axel的最大问题是’faked’通过SSL下载文件。我使用tcdump做到了这一点。它正在下载https链接,就像普通的http一样。那真的让我很生气,如果我不检查的话,我会产生一种虚假的安全感。我怀疑很多人都知道这种严重的安全漏洞。回到aria2,它比其他任何下载器都先进。它支持HTTP(S),FTP,BitTorrent和Metalink协议,是多平台的,并且是下载游标。与DTA不同,它最大程度地增加了ISP的带宽,而CPU或硬盘上没有负载。手册页很大。我永远不会使用其众多选项中的几个。哦,顺便说一句,我用tcdump检查了它的SSL性能,它是可靠的,不是伪造的。我编写了一个脚本,它模仿了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 script to download files from URLs to specified directories listed in a text file

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8381.html,未经允许,请勿转载。