gruene9
Goto Top

Rsync script mit cronjob via PuTTY auf linux server mit open suse 11.1

Hallo, ich bin Admin Beginner und habe gerade auf Strato mit Hilfe dieses Forums ein Load Balancer Problem gelöst und benötige nun eine Beschreibung (am besten ein Skript), wie ich vom (Strato) Server 1 auf Server 2 per rsync mit cronjob regelmäßig synchronisieren kann. Ich habe hierzu schon gegoogelt, aber nur skripte gefunden, die auf andere Bedürfnisse zugeschnitten waren oder für mich unverständlich waren.

Auf den Linux Servern ist ja bekanntlich schon rsync installiert.

Allerdings komme ich nur auf das Programm, wenn ich die Zugangsrechte zum Server habe. Deshalb bin ich der Meinung, dass ich hier nicht nochmals einen User anlegen muss. Denn das würde bedeuten, dass das Passwort für den Zugang zum Server nicht sicher genug ist. Soweit ich weiss geschehen die syncronisationen bei Strato sowieso nur per SSH Verbinung, so dass ich glaube auch hier nichts einstellen zu müssen. Wenn ihr das anders seht klärt mich bitte auf, denn ich habe in jedem skript solche Einstellungen gesehen, was die Fragen aufgeworfen hat.

Was will ich?

Ich denke es ist hier wichtig genau zu beschreiben was ich will, also gut:

Auf dem Server1 befindet sich ein Programm, welches von Nutzern täglich verändert bzw. mit neuen Inhalten gespeist wird. Verändert heisst auch gelöscht (z.B. Inhalt oder ein ganzes Konto/ User). Falls also mal ein Server ausfällt, sollte beispielsweise ein eingegebner Forumseintrag noch vorhanden sein. D. h. auf den anderen Server synchronisiert sein. Die Intervalle sind also relative kurz zu schalten (2,4,6,8,... * * * *) und irgendwo sollte auch das --delete Berücksichtigung finden.

Auf beiden Servern läuft das Programm auf demselben Pfad /https.

Bisher habe ich geschrieben (Übrigens, wie kann man aus Putty inhalte in die Zwischenablage kopieren?):

gid = users
read only = true
..(also das was vorkonfiguriert war)...
slp refresh = 300

dann...
[gruene9]
path = /data/rsync
comment = Hauptverzeichnis fuer rsync
rsync -avz /httpdocs username@server2.stratoserver.net: /httpdocs

Was den automatischen Abgleich über crontab angeht, würde mich auch interessieren, wie ich diesen in /etc/crontab eintragen kann.

1-59/ * * * * (...?)

Für ein Skript, welches ich eventuell noch an bestimmten Stellen modifizieren muss wäre ich auch sehr dankbar.

Falls noch Fragen sind, ich beantworte sie sobald wie ich sie gesehen habe.


Vielen Dank!

Content-Key: 153854

Url: https://administrator.de/contentid/153854

Printed on: April 26, 2024 at 16:04 o'clock

Member: maretz
maretz Oct 27, 2010 at 10:27:31 (UTC)
Goto Top
Moin,

erstmal der übliche Hinweis: Probiere bitte NIE auf einem Live-System etwas aus was du nicht kennst!

Jetzt zur Lösung: Ich würde gucken ob ich das nicht dezent anders lösen kann:

a) NFS verwenden. Schon hast du auf einem Server alle Dateien und der andere mountet das nur entsprechend.

b) rsync via ssh laufen lassen -> schon umgehst du viele Probleme... Da du dir bei deiner Fragestellung wirklich viel Mühe gegeben hast (danke!) hier mal der genaue
Link wie das funktionieren könnte: http://troy.jdmz.net/rsync/index.html . Da steht auch gleich drin wie du das mit der Anmeldung via SSH-Key machst -> schon brauchst du kein
Passwort eingeben o.ä.

Den Rsync-Befehl kannst du dann auch in ne kleine Datei schreiben (z.B. DatenAbgleich.sh):
#!/bin/bash
... (dein rsync-Befehl)

diese dann mittels chmod 755 DatenAbgleich.sh ausführbar machen und das dann in deine Crontab eintragen.

Ich denke damit könntest du schon einiges machen...

Aber Achtung: Das funktioniert NUR bei Dateien. Wenn die Daten z.B. in einer Datenbank abgelegt werden geht das nicht so einfach...
Member: Gruene9
Gruene9 Oct 27, 2010 at 12:04:12 (UTC)
Goto Top
Hallo, vielen vielen Dank. Ich werd mich mal durchbeissen...
Member: Gruene9
Gruene9 Oct 28, 2010 at 09:45:39 (UTC)
Goto Top
Soweit so gut. rsync läuft. Zwar erst mal nur minütlich, aber per sleep Befehl, werden wir das auch auf alle 10 sec drücken können.

Aber, das eigentliche Problem wurde von Dir in Deinem letzten Satz schon richtig vorausgesehen: die Datenbank. Sobald sich ein neuer User registriert oder ein User eine Anzeige schreibt, wird diese gefüttert. Das muss natürlich auch Server 2 wissen. Wie gehe ich hier vor?

Vielen Dank für jegliche Hilfestellung.

Ach Du meine...


Gruene9
Member: micneu
micneu Oct 28, 2010 at 11:46:15 (UTC)
Goto Top
reden wir hier von mysql?

mach einen dump der datenbank und lies diesen in den anderen server ein.
kannst hier auch mal lesen:
http://dev.mysql.com/doc/refman/5.1/de/replication.html


gruß michael
Member: Gruene9
Gruene9 Oct 28, 2010 at 12:17:51 (UTC)
Goto Top
Vielen dank!

Das problem ist hier, dass der Abgleich nur über eine Master-Slave Struktur funktioniert. Bei mir sind beide Server gleichberechtigt. Also käme hier evtl. eine MYSQL Cluster Lösung in Frage. Aber das ist ja ein riesen Buch...

http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-overview.html

...und für ein zweites Studium fehlt mir gerade die Zeit. Vielleicht hat jemand ein ähnliches Problem gehabt und eine Lösung schon parat?


Vielen Dank nochmals.


Greenhorn
Member: Gruene9
Gruene9 Oct 28, 2010 at 21:54:38 (UTC)
Goto Top
Also, für diejenigen, die es interessiert.... ich habe eine Lösung gefunden; ist echt ein cooler Beitrag:

http://forum.poisonnuke.de/index.php?action=ViewThread&TID=3559

Salve,

Geenhorn