为了提高对debian-ports等相关资源的访问速度,在本地sync debian-ports mirror是一个可选项。
过程
创建环境
# 添加专属用户
adduser --disabled-password debian_sync
# 创建mirrors目录( 根据实际需要更改)
mkdir -p /home/debian_sync/mirrors/debian
chown -R debian_sync:debian_sync /home/debian_sync/mirrors
su - debian_sync
下载脚本
Debian官方提供一个一套sync的脚本,可以使用deb安装。不过,为了自定义方便配置,我们使用git下载脚本。
git clone [email protected]:mirror-team/archvsync.git
修改配置文件
进入debian_sync 的主目录下, 将archvsync目录下的两个目录copy 到debian_sync下的主目录:
cp -r archvsync/etc .
cp -r archvsync/bin .
etc
目录是archvsync相关的配置文件,bin
目录是相关的执行脚本。因为我们sync的是debian-ports,而ftpsync是原生支持ports的sync,所以,我们需要更改下相关的配置。
首先,创建ftpsync-ports.conf文件:
cp ftpsync.conf ftpsync-ports.conf
接着我们需要配置该文件中的关键信息:
MIRRORNAME=`hostname -f`
TO="/home/debian_sync/mirrors/debian/"
# MAILTO="$LOGNAME"
# HUB=false
########################################################################
## Connection options
########################################################################
RSYNC_HOST=ftp.de.debian.org
RSYNC_PATH=debian-ports
# RSYNC_USER=
# RSYNC_PASSWORD=
########################################################################
## Mirror information options
########################################################################
# INFO_MAINTAINER="Admins <[email protected]>, Person <[email protected]>"
# INFO_SPONSOR="Example <https://example.com>"
# INFO_COUNTRY=DE
# INFO_LOCATION="Example"
# INFO_THROUGHPUT=10Gb
########################################################################
## Include and exclude options
########################################################################
ARCH_INCLUDE="pool-riscv64 source"
#ARCH_EXCLUDE="pool-alpha pool-hppa pool-hurd-i386 pool-ia64 pool-m68k pool-powerpc pool-ppc64 pool-sh4 pool-sparc64 pool-x32 pool-kfreebsd-amd64 pool-kfreebsd-i386"
########################################################################
## Log option
########################################################################
# LOGDIR=
最主要的就是RSYNC_HOST、RSYNC_PATH及 ARCH_INCLUDE的配置,目前如果按照上面的配置是可以sync mirror的,只不过还是sync的整个debian-ports。因为整个debian-ports的确实有点庞大,如何只sync riscv64的mirror还在进一步探索中,其ARCH_INCLUDE及 ARCH_EXCLUDE就可以做到这一点(目前还没有找到正确的配置)。
创建log目录
在主目录下创建log目录:
mkdir log
也就是说,准备完以上条件后,在debian_sync的主目录下,应该最少有bin
,etc
和log
这三个目录。
执行
debian_sync@dev:~$ ./bin/ftpsync sync:archive:ports
此时ftpsync就会sync其配置文件指定的镜像站
同步
可以使用cron。
Update
以下update/指正来自chentianyu同学,感谢!希望能帮助更多需要的人:
上文中:
ARCH_INCLUDE 的部分,我想提醒下,debian-ports 的目录结构和 debian 不一样,目前版本的 ftpsync 的 ARCH_INCLUDE 不适用于 debian-ports。
debian 的目录结构下,所有架构的 .deb 文件都在 pool/ 目录下,而 debian-ports 中,非 Architecture:all 的 .deb 文件是在 pool-${arch}/ 下的,如 pool-riscv64/;而 ftpsync 代码中硬编码了 pool/,没有对 pool-${arch} 的支持,所以使用 ftpsync 目前是无法只同步 debian-ports 的 riscv64 的。
filter 应该是–filter=include_/pool-riscv/** –filter=exclude_/pool-