vimer linux kernel 爱好者

debian ftpsync sync debian-port[riscv64] mirror

2022-04-17

为了提高对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,etclog这三个目录。

执行

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-


上一篇 debian lxc使用

Comments

Content