[原创]关于debian的源下载方式,适用apt-get包管理器(原创,转载注明)

重复贴和参考价值不大的帖子,版主维护
回复
slong42
帖子: 54
注册时间: 2006-10-25 18:37
送出感谢: 0
接收感谢: 0

[原创]关于debian的源下载方式,适用apt-get包管理器(原创,转载注明)

#1

帖子 slong42 » 2007-11-12 23:22

2007-11-12 23:12
看了网上很多的文章介绍关于如何下载debian的镜像方法。清一色讲的是利用rsync的--exclude参数来排除,或者是用debmirror来下载。但是效率都不高,而且都有很大的缺点。
而我的想法是利用Packages这个文件来下载。因为apt-get是依照这个文件来建立软件仓库的,所以我只要解开这个文件后,将里面的包名提取出来,再用rsync来一次性下载,这样子,效率高,对磁盘空间的利用率也是百分百的。下面就是整个脚本。
########################################################################
#首先是一些变量
dists="--exclude *README* --exclude doc --exclude indices --exclude project --exclude tools --exclude *experimental* --exclude *proposed-updates*" #这是源根目录的一些文件,不需要
distribute="--exclude *Debian* --exclude *oldstable* --exclude *stable* --exclude *testing* --exclude *unstable* --exclude sid --exclude *sarge* --exclude etch-* --exclude lenny-*"#这是debian其它不需要的发行版本
#***各种架构***#

alpha="--exclude *-alpha.diff --exclude *-alpha --exclude *alpha.gz --exclude *_alpha.deb --exclude *_alpha.udeb"
arm="--exclude *-arm.diff --exclude *-arm --exclude *arm.gz --exclude *_arm.deb --exclude *_arm.udeb"
amd64="--exclude *-amd64.diff --exclude *-amd64 --exclude *amd64.gz --exclude *_amd64.deb --exclude *_amd64.udeb"
hppa="--exclude *-hppa.diff --exclude *-hppa --exclude *hppa.gz --exclude *_hppa.deb --exclude *_hppa.udeb"
i386="--exclude *-i386.diff --exclude *-i386 --exclude *i386.gz --exclude *_i386.deb --exclude *_i386.udeb"
ia64="--exclude *-ia64.diff --exclude *-ia64 --exclude *ia64.gz --exclude *_ia64.deb --exclude *_ia64.udeb"
m68k="--exclude *-m68k.diff --exclude *-m68k --exclude *m68k.gz --exclude *_m68k.deb --exclude *_m68k.udeb"
mips="--exclude *-mips.diff --exclude *-mips --exclude *mips.gz --exclude *_mips.deb --exclude *_mips.udeb"
mipsel="--exclude *-mipsel.diff --exclude *-mipsel --exclude *mipsel.gz --exclude *_mipsel.deb --exclude *_mipsel.udeb"
powerpc="--exclude *-powerpc.diff --exclude *-powerpc --exclude *powerpc.gz --exclude *_powerpc.deb --exclude *_powerpc.udeb"
s390="--exclude *-s390.diff --exclude *-s390 --exclude *s390.gz --exclude *_s390.deb --exclude *_s390.udeb"
sparc="--exclude *-sparc.diff --exclude *-sparc --exclude *sparc.gz --exclude *_sparc.deb --exclude *_sparc.udeb"
source="--exclude source --exclude *.diff.gz --exclude *.orig.tar.gz --exclude *.dsc --exclude *tar.gz --exclude *tar.bz2"
#***以上是各种架构***#

src="rsync://ftp.tw.debian.org/debian/" #打算从那个rsync服务器下载镜像呢?
dest="/media/sdb1/sources/debian/" #打算将镜像下载到那里呢?

rsync -avzPS --delete $dists $distribute $alpha $arm $amd64 $hppa $ia64 $m68k $mips $mipsel $powerpc $s390 $sparc $source $src/dists/ $dest/dists #首先下载Packages的文件

#***需要下载的镜像文件***#
dist="/dists/lenny/main/binary-i386/" #目录结构定义
gunzip -cd $dest/$dist/Packages.gz > $dest/$dist/Packages #将Packages解开
cat $dest/$dist/Packages | grep Filename: | sed '/^Filename/s/Filename: //g' > $dest/$dist/needfiles #清理文件,分离所需的文件名
rsync -avzP --delete --files-from=$dest/$dist/needfiles $src/ $dest/ #开始下载所需的镜像文件

dist="/dists/lenny/contrib/binary-i386/"
gunzip -cd $dest/$dist/Packages.gz > $dest/$dist/Packages
cat $dest/$dist/Packages | grep Filename: | sed '/^Filename/s/Filename: //g' > $dest/$dist/needfiles
rsync -avzP --delete --files-from=$dest/$dist/needfiles $src/ $dest/

dist="/dists/lenny/non-free/binary-i386/"
gunzip -cd $dest/$dist/Packages.gz > $dest/$dist/Packages
cat $dest/$dist/Packages | grep Filename: | sed '/^Filename/s/Filename: //g' > $dest/$dist/needfiles
rsync -avzP --delete --files-from=$dest/$dist/needfiles $src/ $dest/

#***以上是需要下载的镜像文件***#
http://hi.baidu.com/slong42/blog/item/b ... f364e.html
上次由 slong42 在 2007-11-12 23:29,总共编辑 1 次。
slong42
帖子: 54
注册时间: 2006-10-25 18:37
送出感谢: 0
接收感谢: 0

#2

帖子 slong42 » 2007-11-12 23:23

稍做修改就是ubuntu的了,我就把原文贴这里了.有兴趣的ubuntu迷们自个改改吧
回复

回到 “归档贴”