PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rsync / SSH / Welche User?



Anja20
03.10.08, 13:09
Hallo zusammen,
ich habe nicht wirklich viel Ahnung von Linux und hoffe auf Eure Hilfe.

Meine Aufgabenstellung ist: Aktualisiere täglich laufende Webs auf einen Backupserver.
Realisiert bisher Cronjob mit Rsync via SSH als root (zum Test)

Herausforderung:

Für jedes Web auf dem Webserver gibt es einen User web1 - webn, Gruppe psacln
Für jedes Web auf dem Backupserver gibt es einen User web1 - webn, Gruppe psacln
Uids und Gids sind auf beiden Servern gleich.
Keys für SSH sind angelegt, privat auf dem Backup, pub auf dem Webserver.
Die User auf dem Webserver haben per Default keine Shell.

Mögliche Vorgehensweisen und Probleme:

1. Ich lasse rsync auf dem BACKUPSERVER als root laufen und logge mich als root auf dem WEBSERVER ein. Dann kann ich alle Daten holen, habe aber falsche uids und gids, und natürlich möchte ich nicht als root unterwegs sein.

2. Ich schaffe einen User BACKUP (der welche Rechte haben muss, damit an die Daten der User web1 bis webn rankann?); auch dann habe ich auf dem BACKUPSERVER aber falsche Uids und Giuds. Evtl. läßt man nach dem Backup per Cron ein chown/chgrp laufen?

3. Ich gebe jedem User web1 bis webn auf dem WEBSERVER eine Shell. Dann habe ich alle Daten auf dem BACKUPSERVER mit den richtigen uids, gids. Muss sonst nichts tun.
Soll/muss/will ich mehrere User-Zugänge haben?

4. Ich lasse rsync als User LOGEIN laufen und kriege dann auf dem WEBSERVER ein su web1 bis webn hin und habe die Daten wieder korrekt (uid/gid) auf dem BACKUPSERVER. Nur wie macht man das?

Ich habe diverse Scripte im Web gefunden, die alle irgendwas ähnliches machen; viel lieber würde ich aber eine Lösung bauen, die ich selbst gemacht und vor allem verstanden habe. (da weiß man, was man macht." :)

Leider habe ich jetzt keine Ahnung, was die richtige Alternative ist.
1. Root + chown/chgrp
2. User BACKUP + chown/chrgp (welche Rechte muss der haben um an die Webs zu kommen)
3. web1 bis webn, rsync, dann aber mit shell für jeden User auf dem WEBSERVER
4. User LOGEIN + su

Vielen Dank für Eure Hilfe.
LG
Anja

drcux
03.10.08, 13:43
1. Ich lasse rsync auf dem BACKUPSERVER als root laufen und logge mich als root auf dem WEBSERVER ein. Dann kann ich alle Daten holen, habe aber falsche uids und gids,


falsch, rsync behält uid und gid.



und natürlich möchte ich nicht als root unterwegs sein.


Das ist natürlich eine andere Geschichte... ;)

Anja20
04.10.08, 11:48
Hmm, dann habe ich wohl ein Flag nicht gesetzt, denn ich habe alle Dateien nun root/root auf dem BACKUPSERVER.

Somit sollte ich also einen User BACKUP schaffen und das Flag setzen.
Der User BACKUP müsste dann zur Gruppe psacln gehören und alle Dateien müssten für die Gruppe lesbar sein.

Prima. Danke Dir.

Dann kann ich mich direkt dem nächsten Schritt zuwenden und meine MYSQLs sichern. Unter Windoof mache ich das bisher mit Navicat, was zumindest bei indizierten Tabellen für mich einen guten Job macht. Unter Linux klappt es warum auch immer mit dem SSH-Tunnel nicht. Evtl. liegt das an SSH2 (XP) > WEBSERVER bzw. OpenSSH (Linux) > WEBSERVER.

Eine Alternative wären Dumps bzw. Amanda (noch nicht versucht), das Dumps auf dem WEBSERVER macht und sie auf dem BACKUPSERVER wieder einspielt.

Es bleibt die Frage nach Veränderungen an den Tabellen während des Backups. Wir haben kleine Seiten wo sich wenig ändert und größere, wo rund um die Uhr Betrieb ist. Dazu sorge ich mich, was passiert, wenn ein Zugriff auf zwei Tabellen passiert, ich aber die Tabelle 1 fünf Minuten vor der Tabelle 2 hole. Alle Tabellen zu sperren, würde zu lange dauern.

Unter Mysql gibt es aber bestimmt eine "Snapshot"-Möglichkeit, sprich hole alles im Zustand zur Zeit x.

Allerdings möchte ich genau nicht alles holen müssen, sondern nur die Änderungen. Müsste ich dann jede Tabelle einzeln sichern und dann via rsync nur holen, wenn geändert?

Vielleicht versuche ich doch zum x-ten Mal Navicat ans laufen zu bringen.