rsync automatisch starten und beenden

Backup, Restore und Transfer von Daten
Post Reply
sacha
Posts: 65
Joined: 2002-11-11 19:01
Location: Aachen, NRW, Germany
Contact:
 

rsync automatisch starten und beenden

Post by sacha »

Hi,

habe gerade die FAQ zum Backup mit rsync durchgelesen.

Ich habe hier 2 Rootserver. Auf dem einen wird ein Backup als .tgz erstellt, dass dann per rsync auf den anderen ruebergeschoben wird.

Jetzt will ich auf dem Backup Server per Cronjob um 03:30 Uhr per "rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon" rsync starten und dann um 03:35 auf dem Client ebenfalls per Cronjob rsync anwerfen und die Backupdatei rueberschieben. Anschliessend soll auf dem Server per Cronjob der rsync-Daemon Prozess um 03:40 gekillt werden.

Wie kann ich den Prozess per Skript killen? Mit ps xf|grep rsync bekomme ich den Prozess angezeigt aber ich muss ja irgendwie die PID auslesen und sie an den Kill Befehl uebergeben. Wie mache ich das?

Oder kann ich mir das sparen? Hintergedanke war, dass rsync auf dem Server ja nur dann zu laufen braucht, wenn der Backup vom Client ruebergeschoben wird.

In der FAQ steht ja man soll
# the rsync daemon
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
in die /etc/inetd.conf eintragen. Aber das sorgt ja nicht dafuer, dass bei einem Neustart des Servers der rsync auch gestartet wird.

Danke und Ciao,

Sacha
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg
 

Re: rsync automatisch starten und beenden

Post by olaf.dietsche »

sacha wrote:habe gerade die FAQ zum Backup mit rsync durchgelesen.

Ich habe hier 2 Rootserver. Auf dem einen wird ein Backup als .tgz erstellt, dass dann per rsync auf den anderen ruebergeschoben wird.

Jetzt will ich auf dem Backup Server per Cronjob um 03:30 Uhr per "rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon" rsync starten und dann um 03:35 auf dem Client ebenfalls per Cronjob rsync anwerfen und die Backupdatei rueberschieben. Anschliessend soll auf dem Server per Cronjob der rsync-Daemon Prozess um 03:40 gekillt werden.

Wie kann ich den Prozess per Skript killen? Mit ps xf|grep rsync bekomme ich den Prozess angezeigt aber ich muss ja irgendwie die PID auslesen und sie an den Kill Befehl uebergeben. Wie mache ich das?

Code: Select all

kill `ps --no-heading -o pid -C rsyncd`
Oder kann ich mir das sparen? Hintergedanke war, dass rsync auf dem Server ja nur dann zu laufen braucht, wenn der Backup vom Client ruebergeschoben wird.

In der FAQ steht ja man soll
# the rsync daemon
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
in die /etc/inetd.conf eintragen. Aber das sorgt ja nicht dafuer, dass bei einem Neustart des Servers der rsync auch gestartet wird.
Das ist auch nicht nötig. Beim Neustart eines Servers wird der inetd gestartet. Der horcht auf allen konfigurierten Ports. Wenn auf einem dieser Ports eine Anfrage reinkommt, dann startet der inetd den zugehörigen Server.

Wenn du also um 3:35 Uhr auf deinem Client den rsync startest, dann fragt dieser bei deinem Server an und dort wiederum wird der rsyncd vom inetd automatisch gestartet.
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim
 

Re: rsync automatisch starten und beenden

Post by oxygen »

kill `pidof rsyncd` sollte das gewünschte erreichen.
sacha
Posts: 65
Joined: 2002-11-11 19:01
Location: Aachen, NRW, Germany
Contact:
 

Re: rsync automatisch starten und beenden

Post by sacha »

Hallo Olaf,
olaf.dietsche wrote: Das ist auch nicht nötig. Beim Neustart eines Servers wird der inetd gestartet. Der horcht auf allen konfigurierten Ports. Wenn auf einem dieser Ports eine Anfrage reinkommt, dann startet der inetd den zugehörigen Server.

Wenn du also um 3:35 Uhr auf deinem Client den rsync startest, dann fragt dieser bei deinem Server an und dort wiederum wird der rsyncd vom inetd automatisch gestartet.
hm, also die /etc/inetd.conf auf dem Server enthaelt jetzt genau diesen Eintrag:
# the rsync daemon
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
Wenn ich auf dem Client folgenden Befehl ausfuehre
rsync --verbose --stats --compress --rsh=/usr/bin/ssh --recursive --times --perms --links --delete --password-file=/root/rsync_pwd /backup/* username@217.160.xxx.xxx::rootserver_backup
erscheint folgende Fehlermeldung:
WARNING: --rsh or -e option ignored when connecting to rsync daemon
rsync: failed to connect to 217.160.xxx.xxx: Connection refused
rsync error: error in socket IO (code 10) at clientserver.c(97)
erst wenn ich auf dem Server den rsync-Daemon mit
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
manuell starte, kann ich den rsync Befehl auf dem Client erfolgreich absetzen.

Also scheint der Eintrag in der /etc/inetd.conf des Servers nicht dafuer zu sorgen, dass das von dir beschriebene automatische Startverhalten aktiviert wird. Woran koennte das liegen?

Und wenn der Daemon automatisch gestartet wird, bleibt er doch auch noch nach der Beendigung des Uebertragungsvorganges, welcher ihn gestartet hat, aktiv, oder?

Danke und Ciao,

Sacha
olaf.dietsche
Posts: 401
Joined: 2002-12-19 02:06
Location: Siegburg
 

Re: rsync automatisch starten und beenden

Post by olaf.dietsche »

sacha wrote:hm, also die /etc/inetd.conf auf dem Server enthaelt jetzt genau diesen Eintrag:
# the rsync daemon
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
Hast du den inetd auch neu initialisiert?

Code: Select all

/etc/init.d/inetd reload
Und mit

Code: Select all

lsof -i :rsync
kannst du sehen, ob der inetd auch auf dem Port horcht.
Und wenn der Daemon automatisch gestartet wird, bleibt er doch auch noch nach der Beendigung des Uebertragungsvorganges, welcher ihn gestartet hat, aktiv, oder?
Wahrscheinlich schon, ich kenne mich mit dem rsyncd nicht aus. Das hängt von dem jeweiligen daemon ab, der vom inetd gestartet wird.
sacha
Posts: 65
Joined: 2002-11-11 19:01
Location: Aachen, NRW, Germany
Contact:
 

Re: rsync automatisch starten und beenden

Post by sacha »

Hi,
olaf.dietsche wrote: Hast du den inetd auch neu initialisiert?

Code: Select all

/etc/init.d/inetd reload
Und mit

Code: Select all

lsof -i :rsync
kannst du sehen, ob der inetd auch auf dem Port horcht.
ich habe gleich den ganzen Server neu gestartet. Bin halt noch zu sehr Windows gepraegt ;-).

Aber ich habe einen Verdacht, woran es liegen koennte:

/etc/init.d/inetd gibt es hier nicht. Das ist ein ziemlich neuer Rootie und ich vermute dass da standardmaessig statt inetd schon xinetd drauf ist.

Wenn ich die Zeile

Code: Select all

# the rsync daemon
rsync stream tcp nowait root /usr/sbin/tcpd /usr/sbin/rsyncd --daemon
in die /etc/xinetd.conf einfuege und dann xinetd mit

Code: Select all

 /etc/init.d/xinetd reload
neu starte kommt es aber wieder aufs Gleiche heraus: rsync wird nicht automatisch gestartet wenn die Anfrage vom Client kommt.

Ich weiss nicht, ob dieser Eintrag in der xinetd.conf ueberhaupt Sinn macht, denn normalerweise sehen die Eintraege dort so aus

Code: Select all

#service ident
#{
#       socket_type     = stream
#       protocol        = tcp
#       wait            = no
#       user            = nobody
#       server          = /usr/sbin/in.identd
#       server_args     = -w -t120
#}
Na ja, wenn es so nicht geht, dann starte ich den Daemon halt direkt ueber den Cronjob. Ist vermutlich nicht so elegant aber tut zumindest.

Ciao,

Sacha
Post Reply