Hier beschreibe ich 2 Möglichkeiten einen Debian Mirror
lokal zu erstellen. Offiziell sollte http://www.debian.org/mirror/
gelesen, beachtet und durchgeführt werden.

Wer einfach schnell eine "österreichische, schnelle" Lösung
sucht, kann diese 2 Skripte verwenden.

1.) Einfach mit rsync:
----------------------------- cut ---------------------------
/usr/bin/rsync  --recursive --times --links --hard-links --delete\
        --bwlimit=64\
        --exclude binary-alpha/ --exclude *_alpha.deb\
        --exclude binary-arm/ --exclude *_arm.deb\
        --exclude binary-hppa/ --exclude *_hppa.deb\
        --exclude binary-ia64/ --exclude *_ia64.deb\
        --exclude binary-m68k/ --exclude *_m68k.deb\
        --exclude binary-mips/ --exclude *_mips.deb\
        --exclude binary-mipsel/ --exclude *_mipsel.deb\
        --exclude binary-powerpc/ --exclude *_powerpc.deb\
        --exclude binary-s390/ --exclude *_s390.deb\
        --exclude binary-sparc/ --exclude *_sparc.deb\
        --exclude binary-hurd-i386/ --exclude *_hurd-i386.deb\
        rsync://ftp.at.debian.org/debian/ /home/ftp/debian/
----------------------------- cut ---------------------------

Und man hat einen vollständigen i386 Mirror. Der kann durchaus
(Stand 17.11.2005) 50 Gigabyte und mehr haben!

2.) Mit debmirror
Dazu muss zuerst einmal gpg und debmirror installiert werden.

Dann braucht man vom Server die Keys (hier von ftp2.de.debian.org)

gpg --recv-keys  4F368D5D
gpg --list-keys

Sollte dann den Key ausgeben.

Folgendes Skript erledigt dann den Rest:

----------------------------- cut ---------------------------
#!/bin/sh
# mirror.sh

set -e

BWLIMIT="$1"
[[ "$BWLIMIT" = "" ]] && BWLIMIT="100"

MIRROR_HOSTNAME=ftp2.de.debian.org
MIRROR_TARGETDIR=/home/ftp/debian

[[ ! -e $MIRROR_TARGETDIR ]] && \
    echo "mirror target directory "$MIRROR_TARGETDIR" not found. exiting" && \
    exit

[[ -e $MIRROR_TARGETDIR/Archive-Update-in-Progress-* ]] && \
    echo Archive-Update-in-Progress && \
    cat $MIRROR_TARGETDIR/Archive-Update-in-Progress-* && \
    exit 0

debmirror \
    --verbose \
    --ignore-small-errors \
    --rsync-options="-q -aIL --partial --bwlimit=$BWLIMIT " \
    --postcleanup \
    --getcontents \
    --host=$MIRROR_HOSTNAME \
    --method=rsync  \
    --root=:debian \
    --dist=sarge \
    --section=main,main/debian-installer \
    --arch=i386 \
    $MIRROR_TARGETDIR

# bei debian.inode.at muss --root=:debian/debian verwendet werden

rsync $MIRROR_HOSTNAME::debian/project/trace/* $MIRROR_TARGETDIR/project/trace/

cd $MIRROR_TARGETDIR/dists
[[ ! -e stable ]] && ln -s sarge stable
[[ ! -e testing ]] && ln -s etch testing
[[ ! -e unstable ]] && ln -s sid unstable


----------------------------- cut ---------------------------

Das ganze kann dann mit cron in der Nacht ausgeführt werden.
Es sollte ein eigener User dafür verwendet werden, z.b.
debmirror. Dazu einfach adduser verwenden (Passwort disable!).

Hier wäre ein cron Beispiel:

6 5 * * *       /usr/bin/nice /usr/local/bin/mirror.sh &>/var/log/debmirror/debmirror.log


Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif