Sätta upp en "push"-server

Att sätta upp en pushserver består av två grundläggande steg: Ställa in rsync-åtkomst (för normal pull-spegling) och ställa in en ssh-utlösarmekanism (för att trycka (push) i pull-speglingen).

(För mer information om vad en push-server är, läs push-speglingsförklaringen.)

Ställa in rsync

Installera rsync version 2.1.1 eller senare. Om din server kör Debian installerar du bara det senaste rsync-paketet.

Skapa rsyncd.conf och lägg in något i stil med detta:

uid = nobody
gid = nogroup
max connections = 25
socket options = SO_KEEPALIVE

[debian]
  path = /srv/debian/mirror
  comment = Debians arkiv (~250 Gbyte)
  auth users = auktoriserat_konto1,auktoriserat_konto2,auktoriserat_kontoN
  read only = true
  secrets file = /etc/rsyncd/debian.secrets

Lägg en post för varje server som hämtar från dig med push i filen /etc/rsyncd/debian.secrets:

auktoriserat_konto1:ett_lösenord
auktoriserat_konto2:annat_lösenord
auktoriserat_kontoN:lösenord

Du har nu gett nedströmsspeglarna tillgång till arkivet på din maskin.

Du vill antagligen starta rsyncprocessen från inetd. För att göra detta måste du lägga in rsync-servicen i filen /etc/services (om det inte redan står där), så här:

rsync           873/tcp

För att aktivera servern från inetd, lägger du till följande i din /etc/inetd.conf:

rsync      stream      tcp         nowait      root /usr/bin/rsync rsyncd --daemon

(Kom ihåg att sända en HUP-signal till inetd för att tala om för det att läsa om sin inställningsfil efter att du ändrat den.)

Ställa in ssh-utlösarmekanism

Skapa en ny ssh-nyckel för kontot som du använder för att spegla Debian. Se till att du inte skriver över din riktiga ssh-nyckel genom att använda flaggan -f, till exempel:

ssh-keygen -f ~/.ssh/identity.minserver

Se till att den nya öppna nyckeln (~/.ssh/identity.minserver.pub) innehåller följande i början:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/sync &"

Du måste ställa in skriptet så att det kontaktar speglar nedströms. Skapa en fil med namnet signal med följande innehåll:

#!/bin/sh

# Detta skript anropas för att signalera fjärrvärden att det är dags
# att spegla arkivet.

echo Signalerar $1
ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1

Detta skript kommer att logga in på fjärrvärden genom att använda den speciella ssh-nyckel du skapade ovan, förutsatt att varje nedströmsspegelsoperatör lägger till denna nyckel till deras egen ~/.ssh/authorized_keys (och ersätter "sync" med "anonftpsync" eller vad deras kommando för att starta speglingen kallas). Skriptet själv gör inget användbart på den andra sidan, kommandot kommer att köras som specificerat i nyckelinställningarna.

För att faktiskt signalera speglarna måste du köra ./signal <plats> <användar-id> efter att din egen rsyncning utförts. Därmed kommer du, så snart som din plats har speglat klart från din uppströmsplats, att börja föra speglingen vidare (push) till de nedströms från dig.

Du kan placera dessa kommandon antingen i slutet av ditt anonftpsync-skript eller, om det är enklare för dig, i ett nytt skript och sedan köra detta skript från anonftpsync, exempelvis:

#!/bin/sh

# Detta skript anropas av websync för att signalera nedströmsspeglarna.

cd $HOME

./signal någon.annan.plats archvsync
./signal och.ytterligare.en kontopåandrasidan

Om du har problem med detta, kontakta oss.