分页: 1 / 1

apt-get调用aria2下载

发表于 : 2010-11-17 15:42
人在井天
网上有apt-fast脚本下载,这个脚本是调用axel来下载,但是,我用的骨头源,发现居然不支持用axel实现多线程下载,仍是一个线程,但发现用aria2却是能够实现的。网上也有调用aria2下载的脚本,我一试却没有成功。于是把这个atp-fast脚本改造了一下,因为自己是菜鸟,所以给每一个命令加上中文注释,高手莫笑:

代码: 全选

#  !/bin/sh
# 设置变量
[ "`whoami`" = root ] || exec sudo "$0" "$@"
#获取用户输入命令,显示工作中

if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";
# 进入下载目录
cd /var/cache/apt/archives/;
#恐怕上次升级的时候一些文件的下载没有完成,先用aria2c下载完成
aria2c -c -s 10 -j 10  -i apt-fast.list 

# 获取要下载的软件列表,并形成文件,调用aria2进行下载
 apt-get -y --print-uris $@ | egrep -o -e "(ht|f)tp://[^\']+" > apt-fast.list && aria2c -c -s 10 -j 10  -i apt-fast.list 
# 下载完毕,重新运行apt-get命令
apt-get $@;
else
   apt-get $@;
fi
网上一般的做法是,把这个脚本命名为:apt-fast,并加上可执行权限:

代码: 全选

chmod +x apt-fast
然后把它复制到/usr/bin下面。
以后就可以用apt-fast命令替代apt-get命令,如:

sudo apt-fast dist-upgrade 替代 sudo apt-get dist-upgrade

另,请先安装aria2

代码: 全选

sudo apt-get install aria2

请注意,aria2下载的命令是aria2c,而不是aria2
脚本中aria2c命令所加的参数-c是断点接续,-s 10是以10个线程下载,-j 10 是最大并行下载数为10。

Re: apt-get调用aria2下载

发表于 : 2010-11-17 15:47
momova
哇哦,这个不错,我前段时间看到一个和你这个类似的东西。

Re: apt-get调用aria2下载

发表于 : 2010-11-17 16:14
人在井天
momova 写了:哇哦,这个不错,我前段时间看到一个和你这个类似的东西。
东西是别人的,只是我加了中文注释,让菜鸟用个明白。

Re: apt-get调用aria2下载

发表于 : 2010-11-17 16:16
lubcat
应该不错吧。

Re: apt-get调用aria2下载

发表于 : 2010-11-18 9:57
人在井天
我这个比较的懒,一般的懒得把这个脚本复制到/usr/bin下面,我就直接放在主目录下,打开终端直接就可以用这个命令,如:
sudo ./apt-fast dist-upgrade
这个命令代替:
sudo apt-get dist-upgrade

Re: apt-get调用aria2下载

发表于 : 2011-01-17 21:12
Drdi
应该会用到的吧 加了注释也看不大懂啊 已经安装好了 apt-fast 把/usr/bin/apt-fast 里面的内容替换一下就可以了吧应该

Re: apt-get调用aria2下载

发表于 : 2011-04-09 14:45
_Pilgrim
试试... :em11

Re: apt-get调用aria2下载

发表于 : 2011-09-02 6:54
ctrl-fairy
人在井天 写了:网上有apt-fast脚本下载,这个脚本是调用axel来下载,但是,我用的骨头源,发现居然不支持用axel实现多线程下载,仍是一个线程,但发现用aria2却是能够实现的。网上也有调用aria2下载的脚本,我一试却没有成功。于是把这个atp-fast脚本改造了一下,因为自己是菜鸟,所以给每一个命令加上中文注释,高手莫笑:

代码: 全选

#  !/bin/sh
# 设置变量
[ "`whoami`" = root ] || exec sudo "$0" "$@"
#获取用户输入命令,显示工作中

if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";
# 进入下载目录
cd /var/cache/apt/archives/;
#恐怕上次升级的时候一些文件的下载没有完成,先用aria2c下载完成
aria2c -c -s 10 -j 10  -i apt-fast.list 

# 获取要下载的软件列表,并形成文件,调用aria2进行下载
 apt-get -y --print-uris $@ | egrep -o -e "(ht|f)tp://[^\']+" > apt-fast.list && aria2c -c -s 10 -j 10  -i apt-fast.list 
# 下载完毕,重新运行apt-get命令
apt-get $@;
else
   apt-get $@;
fi
网上一般的做法是,把这个脚本命名为:apt-fast,并加上可执行权限:

代码: 全选

chmod +x apt-fast
然后把它复制到/usr/bin下面。
以后就可以用apt-fast命令替代apt-get命令,如:

sudo apt-fast dist-upgrade 替代 sudo apt-get dist-upgrade

另,请先安装aria2

代码: 全选

sudo apt-get install aria2

请注意,aria2下载的命令是aria2c,而不是aria2
脚本中aria2c命令所加的参数-c是断点接续,-s 10是以10个线程下载,-j 10 是最大并行下载数为10。
aria2官网有apt-metalink

Re: apt-get调用aria2下载

发表于 : 2022-07-27 14:50
宁静致远468835121
那个正则没有匹配到https就稍稍改了一下,请大佬指正

代码: 全选

#  !/bin/sh
# 设置变量
[ "`whoami`" = root ] || exec sudo "$0" "$@"
#获取用户输入命令,显示工作中

if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";
# 进入下载目录
cd /var/cache/apt/archives/;
#恐怕上次升级的时候一些文件的下载没有完成,先用aria2c下载完成
aria2c -c -s 10 -j 10  -i /home/njzy/apt-fast.list

# 获取要下载的软件列表,并形成文件,调用aria2进行下载
apt-get -y --print-uris $@ | egrep -o -e "(http|https|ftp)://[^\']+" > /home/njzy/apt-fast.list && aria2c -c -s 10 -j 10  -i /home/njzy/apt-fast.list
# 下载完毕,重新运行apt-get命令
apt-get $@;
else
   apt-get $@;
fi
那个目录换成我个人的了`/home/njzy/apt-fast.list`

Re: apt-get调用aria2下载

发表于 : 2022-07-27 15:36
宁静致远468835121
我的ubuntu还是会去重新下载,通过阅读帮助,发现apt会首先下载到/var/cache/apt/archives/partial/,然后mv出来,故做出修改

代码: 全选

#  !/bin/bash
# 设置变量
[ "`whoami`" = root ] || exec sudo "$0" "$@"
#获取用户输入命令,显示工作中

if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";
# 进入下载目录
cd /var/cache/apt/archives/partial/;
#恐怕上次升级的时候一些文件的下载没有完成,先用aria2c下载完成
aria2c -c -s 10 -j 10  -i /home/njzy/apt-fast.list

# 获取要下载的软件列表,并形成文件,调用aria2进行下载
apt-get -y --print-uris $@ | egrep -o -e "(http|https|ftp)://[^\']+" > /home/njzy/apt-fast.list && aria2c -c -s 10 -j 10  -i /home/njzy/apt-fast.list
# 下载完毕,重新运行apt-get命令
apt-get $@;
else
   apt-get $@;
fi