我尝试axel
了Gufran的建议,但令我非常失望。我的目标是找到CLI替代品,DownThemAll
因为即使在8核Mac Pro上,它也会占用CPU和硬盘并减慢整个系统的速度。我还希望用wget
和的多线程替换,而curl
不是运行多个脚本实例的脚本的某些混淆。因此,我进行了进一步搜索,发现我现在所认为的是最先进的现代多线程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"
文件输出到directory 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中的文件下载到文本文件中列出的指定目录。