Einen Push-Spiegel aufzusetzen, besteht aus zwei Aufgaben:
Einrichten des rsync-Zugangs (für normales, Pull
-Spiegeln) und
Einrichtung des Auslöse-Mechanismus (für den pushing
-Teil des
Pull
-Spiegelns).
(Wenn Sie genauere Informationen darüber erhalten möchten, was ein Push-Spiegel ist, lesen Sie bitte die Beschreibung des Push-Spiegelns.)
Installieren Sie rsync 2.1.1 oder neuer. Wenn Ihr
Rechner unter Debian läuft, installieren Sie einfach das neueste
rsync-Paket.
Erzeugen Sie die Datei rsyncd.conf und schreiben Sie
etwas Ähnliches wie das Folgende hinein:
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = autorisierter_Zugang1,...,autorisierter_ZugangN read only = true secrets file = /etc/rsyncd/debian.secrets
Fügen Sie einen Eintrag für jeden Rechner zur Datei
/etc/rsyncd/debian.secrets hinzu, bei dem Sie das
Spiegeln einleiten:
autorisierter_Zugang1:ein_Passwort autorisierter_ZugangN:ein_weiteres_Passwort
Sie haben jetzt den in der Hierarchie tiefergelegenen Spiegeln Zugriff zu Ihrem Rechner gewährt.
Sie möchten wahrscheinlich den rsync-Daemon von inetd aufrufen
lassen. Um dies zu erledigen, müssen Sie den rsync-Dienst in die
Datei /etc/services eintragen (falls er dort noch nicht
steht), ungefähr wie folgt:
rsync 873/tcp
Um den Daemon per inetd zu starten, fügen Sie das Folgende zu
Ihrer Datei /etc/inetd.conf hinzu:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
(Sie müssen dem inetd anschließend ein HUP-Signal schicken, um ihm mitzuteilen, dass die Konfiguration neu eingelesen werden soll.)
Erzeugen Sie einen neuen SSH-Schlüssel für den Zugang, den Sie verwenden, um Debian zu spiegeln. Stellen Sie sicher, dass Sie den eigentlichen SSH-Schlüssel nicht überschreiben, indem Sie die Option -f verwenden, beispielsweise:
ssh-keygen -f ~/.ssh/identity.meinRechner
Stellen Sie sicher, dass der neue öffentliche Schlüssel (~/.ssh/identity.meinRechner.pub) Folgendes am Dateianfang enthält:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/sync &"
Sie müssen ein Skript einrichten, das die tiefergelegenen Spiegel
kontaktiert. Erzeugen Sie eine Datei mit dem Namen
signal, die Folgendes enthält:
#!/bin/sh # Dieses Skript wird gestartet, um dem entfernten Rechner zu signalisieren, # dass es Zeit zum Spiegeln des Archivs ist. echo Signalisiere $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.meinRechner sleep 1
Dieses Skript wird sich mit dem speziellen SSH-Schlüssel, den Sie
oben erstellt haben, auf einem entfernten Rechner einloggen, vorausgesetzt,
jeder Spiegel unterhalb von Ihnen fügt diesen Schlüssel zu seiner eigenen
~/.ssh/authorized_keys hinzu (ebenfalls mit der Ersetzung von sync
durch
anonftpsync
oder wie auch immer sein Befehl zum Starten des Spiegelns
genannt ist). Das
Skript selbst wird nichts sinnvolles auf dem entfernten Rechner
machen, der einzelne Befehl wie er in der Schlüsseleinstellung angegeben ist
wird ausgeführt.
Um den Spiegeln tatsächlich ein Signal zu senden, müssen Sie ./signal
<Site> <Benutzername> ausführen, sobald Ihr eigener
Rsync-Lauf beendet ist. Daher werden Sie an alle tieferliegenden von Ihnen
die Daten weiterschieben, sobald Sie mit dem Spiegeln von Ihrer
Ursprungs-Site fertig sind.
Sie könen diese Befehle entweder an das Ende Ihres Skriptes
anonftpsync anfügen, oder, falls dies bequemer für Sie ist,
in ein neues Skripte einfügen, und dann das Skript von
anonftpsync ausführen lassen, beispielsweise:
#!/bin/sh # Dieses Skript wird von websync gestartet, um Signale an die # tiefergelegenen Spiegel zu senden. ./signal ein.anderer.Rechner archvsync ./signal ein.weiterer.Rechner Benutzername2
Falls Sie irgendwelche Probleme damit haben, kontaktieren Sie uns (auf Englisch).