问题描述
我刚刚升级了计算机硬件(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和硬盘并降低整个系统的速度。我还想要wget和curl的多线程替代品,而不是运行多个此类实例的脚本的一些混用。因此,我进行了进一步搜索,发现我现在所认为的是最终的最现代的多线程CLI下载器-aria2。 axel的最大问题是’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
它创建目录并下载到它们。它可以创建嵌套目录,如第二个示例所示。
参考资料