Deutsch
2014-09-02

Content

Automatische rsync Backuplösung mit ssh Keyfile per cron job

Für zwei oder mehrere Eisfair mit dynamischer IP Adresse (z.B. an DSL)
<small>Download für komplettes Howto als PDF Datei hier.</small>

Da ich inzwischen mehrere Eisfair Server in meinem Bekannten- und Familien-Umfeld betreue habe ich mir ein Backupkonzept überlegt, damit ich mal im Fall der Fälle schnell einen der betreuten Eisfair Server per Backup wiederherstellen kann.
Dabei bin ich auf rsync gestoßen und erarbeitete mir eine einfache aber effektive Backuplösung zwischen 2 Eisfair Servern die per Flatrate und dyndns Dienst immer übers Internet erreichbar sind (Solange die Leitung funktioniert).
Dieses Konzept kann man beliebig für mehrere Server erweitern und läuft wenn es einmal eingerichtet ist völlig automatisch.

Auf jedem "zu sichernden" Eisfair wird der gleiche User mit einer eigenen Gruppe für eingeschränkte Rechte per "User Service" angelegt.
Man baut in dem home Verzeichnis des eingeschränkten Users je passend zum "zu sichernden" Server eine Ordnerstruktur auf.
(Mehr dazu siehe unten im Howto)
In diesen Ordn</small><small>ern werden per Backupzip die zu sichernden Daten gelagert und diese per rsync und ssh auf den Eisfair Servern synchronisiert gespeichert.
Da das Backupzip Package  mit root Rechten arbeitet, kommt keiner an diese Daten, außer Superuser mit root Rechten.
rsync synchronisiert die Daten trotz root Rechte dieser, aber eben auch mit root Rechte durch einen cron job.
Vorteil ist, alle anderen User außer die Superuser können nicht auf dieses home Verzeichnis zugreifen. <small> </small>Man kann dieses home Verzeichnis auch wunderbar auf eine extra Festplatte anlegen/mounten, die dann noch einfacher zu tauschen ist bei einem Defekt.
Physikalische Trennung und sichere Lagerung für regelmäßige Backups ist also gewährleistet.</small>

ACHTUNG
Damit es übersichtlicher wird, hier die Beispielumgebung:
1. Eisfair Server heißt: CHARLY mit der dyndns URI charly.dyndns.org
2. Eisfair Server heißt RUDI mit der dyndns URI rudi.dyndns.org Die Servernamen, User- und Gruppenbezeichnungen sind natürlich auf die eigene Umgebung anzupassen.

 



Ziel:
  • automatische Backups zwischen 2 Eisfair Server
  • automatische Authentifizierung des Backup Users am Server durch Keyfile
  • verschlüsselte Datenübertragung
  • ssh Session soll nur für rsync Befehl nutzbar sein
  • Nur Superuser mit root Rechten sollen Zugriff auf die Backup Dateien haben
Benötigte Anwendungen:
  • cron im Eisfair base Package enthalten
  • inet Package für Eisfair, enthält die ssh Unterstützung[1]
  • rsync Package für Eisfair[2]
  • rsync bin[3]
  • Backup-Zip 1.0.2 für Eisfair[4]
  • dyndns Package für Eisfair[5]
Vorbereitungen:
  1. Man braucht an den zwei oder mehreren Eisfair Servern Zugriff mit root Rechten.
    (z.B. per putty und ssh Terminal)
  2. Falls die Eisfair Server hinter einem Router oder sonstige Firewall stehen, muss der ssh Port geforwarded werden auf die Eisfair Server.
    (z.B. mit fli4l ein Portforwad für ssh Port 22 (oder gewünschten Port) einrichten auf den jeweiligen Eisfair Server und auf dem fli4l muss dann dyndns vorhanden sein siehe fli4l Dokumentation)
  3. Bei einem Eisfair Server mit DSL und Routing Diensten muss Port 22 für ssh und Port 873 für rsync geöffnet sein.
    ( INPUT_ACCEPT_PORT_1='22' & INPUT_ACCEPT_PORT_2='873' im "Routing Service")
  4. inet Package installieren und konfigurieren für ssh auf seine Bedürfnisse z.B. ala Howto "SSH Key Login für Eisfair mit Putty und WinSCP" .
  5. Backupzip Package installieren, konfigurieren und auf seine Bedürfnisse einrichten, dazu noch mehr in Schritt 7.
  6. Bei einem DSL Eisfair Server mit Router Diensten, das dyndns Package installieren und konfigurieren. Den dyndns.org Account aktivieren. 
    (Ansonsten z.B. den fli4l Router mit dyndns installieren und konfigurieren und den dyndns Account aktivieren).
  7. rsync Package installieren und mit der rsync bin von Thomas Bork im Ordner /usr/bin austauschen incl. Rechte korrigieren, dazu noch mehr in Schritt 4.

Schritt 1.

Als root User am Eisfair CHARLY anmelden, und mit dem Befehl setup das "Eisfair setup" Menü aufrufen.
  1. Wechseln per  "User administration" und den User rbackup per  "Add new User" Menü anlegen.
  2. Mit "Add a new group" im Menü die Gruppe backup anlegen.
  3. Mit "Change group of user" im Menü dem User rbackup die Gruppe backup zuweisen.
Diese Punkte wiederholt man z.B. per putty Terminal oder direkt am Eisfair Server RUDI, damit auf beiden Servern der gleiche User mit Gruppe und home Verzeichnisse vorhanden sind.

Schritt 2.

Das "Eisfair setup" Menü auf CHARLY verlassen und mit dem Befehl "su rbackup" auf den User rbackup wechseln.
Zur Sicherheit wechselt man nochmal auf das home Verzeichnis des Users rbackup und legt dann den ssh Key Ordner an.

# cd /home/rbackup
# mkdir .ssh
<small>Achtung: Nicht den Punkt bei .ssh vergessen sonst ist es kein "verstecktes" Verzeichnis.
<big>
rbackup muss nun ein Schlüsselpaar erstellen:
</big></small>
# ssh-keygen -b 1024 -f .ssh/identity

ACHTUNG Ganz wichtig ist es jetzt, bei der Abfrage "Enter passphrase (empty for no passphrase):" einfach kein Passwort zu vergeben und durch Taste ENTER zu bestätigen wie auch bei "Enter same passphrase again:" kein Passwort zu vergeben und wieder mit der Taste ENTER weiter zu gehen.
Man muss hier kein Passwort vergeben, da sonst das automatische Login später per ssh Key nicht funktioniert!


Dann den eigenen öffentlichen Schlüssel(Public Key) authorisieren:

# cat .ssh/identity.pub >> .ssh/authorized_keys

Eine leere KNOW_HOSTS Datei vorbereiten:

# touch /home/rbackup/.ssh/known_hosts

Jetzt sollten auf  CHARLY diese 4 Dateien vorhanden sein:

/home/rbackup/.ssh/authorized_keys
/home/rbackup/.ssh/identity
/home/rbackup/.ssh/identity.pub
/home/rbackup/.ssh/known_hosts

Wichtig ist es die Rechte noch richtig zu setzen:

# chmod 700 /home/rbackup/.ssh
# chmod 600 /home/rbackup/.ssh/authorized_keys
# chmod 600 /home/rbackup/.ssh/identity
# chmod 644 /home/rbackup/.ssh/identity.pub
# chmod 700 /home/rbackup/.ssh/known_hosts

Diese Dateien braucht man aber auch auf RUDI, d.h. einfach nochmal wie oben erstellen, so das auf beiden Eisfair Servern
diese 4 Dateien mit den gleichen Rechten wie beschrieben vorhanden sind.
( Achtung wieder mit leeren Passwort bei dem Schlüsselpaar)

Schritt 3.

Auf jedem Server nun per root User ins "Eisfair setup" Menü anmelden.
Wechseln per "Service administration" in das "Edit Configuration" Menü von "Inet Service".

Der SSH Dienst sollte schon für automatisches starten vor konfiguriert  sein.
("START_SSH = yes", "SSHD_START_METHOD = xi" und "START_XINETD =  yes")
Ansonsten konfigurieren wie im Howto "SSH Key Login für Eisfair mit Putty und WinSCP"

Wichtig sind folgende Parameter zu konfigurieren auf beiden Eisfair Servern CHARLY und RUDI:

...

SSH_ALLOW_USER_N             =  2             # Anpassen auf  Gegebenheiten

SSH_ALLOW_USER_1           =  root           # War bei mir vorhanden deshalb, anpassen auf eigene Gegebenheiten

SSH_ALLOW_USER_2           =  rbackup    # der Backup User für rsync

...

SSH_PUBLIC_KEY_N             =  2                  # Anpassen auf  Gegebenheiten
SSH_PUBLIC_KEY_1           =  /root/xyz.pub # War bei mir vorhanden, deshalb anpassen auf eigene Gegebenheiten

SSH_PUBLIC_KEY_2           =  /home/rbackup/.ssh/identity.pub  # Hier ist der Pfad zum Public Key von rbackup einzutragen

...

SSH_PASSWDAUTH               =  no       # Sollte auf no stehen wegen erhöhter Sicherheit durch SSH Key Authentifizierung

SSH_USEPAM                   =  no             # Sollte auf no stehen wegen erhöhter Sicherheit durch SSH Key Authentifizierung

...

Bei beiden Servern speichern und aktivieren nicht vergessen!

Man braucht  aber jetzt noch den jeweiligen Public Key des jeweiligen rbackup von CHARLY und RUDI auf beiden Servern.
Am einfachsten ist man kopiert per root User mit WinSCP den /home/rbackup/.ssh/identity.pub in den /tmp Ordner
des jeweiligen Servers  und fügt den Key  wieder  wie folgend  auf beide Server hinzu:

# cat /tmp/identity.pub >> /home/rbackup/.ssh/authorized_keys
Wenn alles richtig gemacht wurde, stehen jetzt in der /home/rbackup/.ssh/authorized_keys jeweils 2 Public Keys von rbackup.
Einmal mit der Endung  rbackup@CHARLY und einmal mit rbackup@RUDI, das sieht dann so aus:

CHARLY # cat /home/rbackup/.ssh/authorized_keys
                    ssh-rsa ***gekürzt***= rbackup@CHARLY
                    ssh-rsa ***gekürzt***= rbackup@RUDI
RUDI       # cat /home/rbackup/.ssh/authorized_keys
                   ssh-rsa ***gekürzt***= rbackup@RUDI
                   ssh-rsa ***gekürzt***= rbackup@CHARLY

Auf jedem Server nun wieder per root user ins "Eisfair setup" Menü anmelden.
Wechseln per "Service administration" in das "Edit Configuration" Menü von "Inet Service".

Nur öffnen und wieder abspeichern, ohne dieses nochmalige Öffnen und Speichern funktioniert es nicht.
(Warum ist mir noch unklar)

Am besten sollte man jetzt als su rbackup den ssh Zugang ohne Passwort testen mit:

Auf CHARLY   # ssh -i /home/rbackup/.ssh/identity rudi.dyndns.org

Auf RUDI         # ssh -i /home/rbackup/.ssh/identity charly.dyndns.org

Wenn alles richtig ist, sollte man im Terminal per ssh des jeweiligen Servers sein.
Falls etwas nicht funktioniert, nochmal  Schritt 2. von vorne durcharbeiten.

Schritt 4.

Mit dem "Package administration" Menü über das "Search packages with Pack-Eis" Menü das rsync Package auf beiden Eisfair installieren.
Da dieses Package kleine Fehler enthält habe ich zur Sicherheit folgende Lösung gewählt, um einen sicheren rsync Betrieb zu gewährleisten.
  • als root User die Rechte des rsync Package korrigieren
# chmod 700 /var/install/bin/setup.services.rsync
# chmod 700 /var/install/bin/rsync-doc
# chmod 700 /var/install/bin/rsync-edit
  • die rsync bin von http://download.eisfair.org/tombork/test/rsync downloaden und in das Verzeichnis /usr/bin kopieren
    (alte rsync überschreiben) und Rechte anpassen:
# chmod 755 /usr/bin/rsync

Das alles macht man wieder auf beiden Eisfair Servern CHARLY und RUDI.

Schritt 5.

Man braucht jetzt 3 kleine Scripts zur Steuerung von rsync und cron.
  • rsync-cron         # das Script welches per cron aufgerufen wird für die Verbindungs Parameter von rsync
  • rsync-index        # in dieser Date legt man fest per include/exclude welche Dateien und Ordner von rsync synchronisiert werden
  • rsync-validate    #  das Script für Festlegung des rsync Befehls auf den ssh Key, so dass nichts anderes mit diesen ssh Key gemacht werden kann
rsync-cron auf CHARLY anlegen:
<kbd class="command">cat > /home/rbackup/rsync-cron << "EOF"
rsync -e 'ssh -i /home/rbackup/.ssh/identity' -avzuP --include-from=/home/rbackup/rsync-index \
/home/rbackup/ rbackup@rudi.dyndns.org:/home/rbackup/
EOF
</kbd>
rsync-cron auf RUDI anlegen:
<kbd class="command">cat > /home/rbackup/rsync-cron << "EOF"
rsync -e 'ssh -i /home/rbackup/.ssh/identity' -avzuP --include-from=/home/rbackup/rsync-index \
/home/rbackup/ rbackup@charly.dyndns.org:/home/rbackup/
EOF
</kbd>
Alles ab "rsync -e...." bis " muss in eine Zeile, aber wenn man alle 3 Zeilen markiert und in Konsole am Eisfair rein kopiert,
wird so auch die Datei rsync-cron angelegt.
Der Unterschied zwischen den zwei Dateien ist jeweils rudi.dyndns.org und charly.dyndns.org.

rsync-index auf CHARLY anlegen:
<kbd class="command">cat > /home/rbackup/rsync-index << "EOF" # Datei anlegen
+ backup/ # 1. Zeile in der Datei
+ backup/charly/ # 2. Zeile usw. usf.
+ backup/charly/* #
+ backup/rudi2005/ #
+ backup/rudi2005/* #
- * # letzte Zeile

EOF # Datei schliessen und speichern</kbd>
rsync-index auf RUDI anlegen:
<kbd class="command">cat > /home/rbackup/rsync-index << "EOF"
+ backup/
+ backup/charly/
+ backup/charly/*
+ backup/rudi2005/
+ backup/rudi2005/*
- *

EOF</kbd>
Beide Dateien sind genau gleich, aber können gerne nach Wunsch an gepasst werden, wobei die erste Zeile das oberste Verzeichnis ist.
Zu Beachten ist, dass Verzeichnis und Dateien extra angegeben werden müssen, Joker * Funktioniert aber auch für Dateien
Mehr dazu siehe manpage  rsync[6] über include/exclude Datei.

rsync-validate auf CHARLY anlegen:
<kbd class="command">cat > /home/rbackup/rsync-validate << "EOF"</kbd>#!/bin/sh 
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac <kbd class="command">
EOF</kbd>
Mit diesem Script werden alle Befehle, die in der ssh Konsole eingegeben werden und nicht mit rsync anfangen, auf dem CHARLY Eisfair geblockt.
Mehr dazu siehe Schritt8.

rsync-validate auf RUDI anlegen:
<kbd class="command">cat > /home/rbackup/rsync-validate << "EOF"</kbd>
#!/bin/sh
 
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac <kbd class="command">
EOF</kbd>
Mit diesem Script werden alle Befehle, die in der ssh Konsole eingegeben werden und nicht mit rsync anfangen, auf dem RUDI Eisfair geblock. Mehr dazu siehe Schritt8.

Hier nochmal die Dateien zum download, aber man sollte daran denken, diese an seine Gegebenheiten anzupassen und richtig zu verrechten.
  • rsync-cron_charly und rsync-cron_rudi (umbenennen auf jeweils rsync-cron)
  • rsync-index
  • rsync-validate

Schritt 6.

Planung der Backupverzeichnisse sieht so aus:
Ein Hauptverzeichnis erstellen namens backup , in dem die jeweiligen Verzeichnisse der Server angelegt werden. Dafür folgende Schritte als "su rbackup" User durcharbeiten:

# cd /home/rbackup

# mkdir backup

# chmod 700 /home/rbackup/backup

# cd backup

# mkdir charly

# mkdir rudi

# mkdir sonstiges

Jetzt noch die restlichen Rechte setzen mit:

# chmod 700 -Rv /home/rbackup/backup/*

# chmod 700 -v /home/rbackup/rsync*

Schritt 7.

Als root User mit dem "Package administration" Menü über das "Search packages with Pack-Eis" Menü das Backupzip Package auf beiden Eisfair Servern installieren, aber im Beispiel fängt man besser mit CHARLY an.

Update: Parameter für neue Backup-Zip 1.0.2 angepasst

Folgende Parameter konfigurieren im Abschnitt Cron Backups von Backupzip Package:

 BACKUP_CS_CRON_USE='yes'     # Zeitliche gesteuerte Backup Durchläufe per Cron nutzen

BACKUP_CS_CRON_SCHEDULE='0 3 * *1'  # Uhrzeit der Backup Durchläufe ist auf 3:00 (= 0 3) Monatags(=1) eingestellt, es wird immer per Minuten,Stunden, Tag(Datum), Monat(Datum), Wochentag eingeteilt, wobei die Wochentag Ziffer  0 = Sonntag ist.

BACKUP_CS_N='3'                     # Anzahl der zu sichernden Verzeichnisse. Als Beispiele werde ich /etc & /home & /var/www/ htdocs für Sicherung  der Eisfair Konfiguration, home Verzeichnisse der User und den Webseiten Inhalt nutzen, mehr dazu in der Package Dokumentation von Backupzip, gegebenfalls auf eigene Bedürfnisse anpassen.

/etc Verzeichnis sichern:

BACKUP_CS_1_TEC='gzip'              # Hier kann der Packer gewählt werden, ich habe gzip genommen, da dieser schneller als der bzip2 ist aber dafür eben die Archive einbischen größer sind als mit bzip2.

BACKUP_CS_1_SIZE='700'                      # splitsize (MB)

BACKUP_CS_1_ROTATION='1'      # Anzahl der Rotationen, bei 1 wird nur eine Datei angelegt und jedesmal überschrieben. Bei z.B. 7 werden 7 Backup chronologisch gespeichert und wenn der 7bte Durchlauf erreicht ist, wird beim nächsten der erste wieder überschrieben. 7 ist z.b. sinnvoll für tägliche Backupzyklen, bei der dann maximal 7ben Tage rückwirkend Backups vorhanden sind.

BACKUP_CS_1_SOURCE_DIR='/etc'               # source directory

BACKUP_CS_1_SOURCE_DIR_EXCL_N='4'           # nr of excludes (0=no)

BACKUP_CS_1_SOURCE_DIR_EXCL_1='backup.d'    # exclude 1 (e.g. backup.d)

BACKUP_CS_1_SOURCE_DIR_EXCL_2='check.d'     # exclude 2

BACKUP_CS_1_SOURCE_DIR_EXCL_3='default'     # exclude 3

BACKUP_CS_1_SOURCE_DIR_EXCL_4='default.d'   # exclude 4

BACKUP_CS_1_TARGET_DIR='/home/rbackup/backup/charly'  # target directory
Diesen Pfad dann auf dem RUDI Eisfair anpassen zu /home/rbackup/backup/rudi
BACKUP_CS_1_TARGET_ARC='etc'                # target archiv name


/home Verzeichnis sichern:

BACKUP_CS_2_TEC='gzip'              # Hier kann der Packer gewählt werden, ich habe gzip genommen, da dieser schneller als der bzip2 ist aber dafür eben die Archive einbischen größer sind als mit bzip2.

BACKUP_CS_2_SIZE='700'  
                    # splitsize (MB)

BACKUP_CS_2_ROTATION='1'      # Anzahl der Rotationen, bei 1 wird nur eine Datei angelegt und jedesmal überschrieben. Bei z.B. 7 werden 7 Backup chronologisch gespeichert und wenn der 7bte Durchlauf erreicht ist, wird beim nächsten der erste wieder überschrieben. 7 ist z.b. sinnvoll für tägliche Backupzyklen, bei der dann maximal 7ben Tage rückwirkend Backups vorhanden sind.

BACKUP_CS_2_SOURCE_DIR='/home'
               # source directory

BACKUP_CS_2_SOURCE_DIR_EXCL_N='3'           # nr of excludes (0=no)

BACKUP_CS_2_SOURCE_DIR_EXCL_1='/home/*/samba_recycle_bin' # Dieser Ordner existiert nur bei den neustens Samba Packages und wird nicht mitgesichert.
BACKUP_CS_2_SOURCE_DIR_EXCL_2='/home/rbackup'  # Ordner wird nicht mitgesichert
BACKUP_CS_2_SOURCE_DIR_EXCL_3='/home/example' # Ordner wird nicht mitgesichert
BACKUP_CS_2_TARGET_DIR='/home/rbackup/backup/charly'  # target directory
Diesen Pfad dann auf dem RUDI Eisfair anpassen zu /home/rbackup/backup/rudi

BACKUP_CS_2_TARGET_ARC='home_charly'             # target archiv name
Diesen Dateinamen auf RUDI Eisfair anpassen zu home_rudi


/var/www/htdocs  Webseiten Verzeichnis sichern:

BACKUP_CS_3_TEC='gzip'              # Hier kann der Packer gewählt werden, ich habe gzip genommen, da dieser schneller als der bzip2 ist aber dafür eben die Archive einbischen größer sind als mit bzip2.

BACKUP_CS_3_SIZE='700'     
                 # splitsize (MB)

BACKUP_CS_3_ROTATION='1'      # Anzahl der Rotationen, bei 1 wird nur eine Datei angelegt und jedesmal überschrieben. Bei z.B. 7 werden 7 Backup chronologisch gespeichert und wenn der 7bte Durchlauf erreicht ist, wird beim nächsten der erste wieder überschrieben. 7 ist z.b. sinnvoll für tägliche Backupzyklen, bei der dann maximal 7ben Tage rückwirkend Backups vorhanden sind.

BACKUP_CS_3_SOURCE_DIR='/var/www/htdocs' 
              # source directory

BACKUP_CS_3_SOURCE_DIR_EXCL_N='2'           # nr of excludes (0=no)

BACKUP_CS_3_SOURCE_DIR_EXCL_1='logs'    # exclude 1 (e.g. logs)

BACKUP_CS_3_SOURCE_DIR_EXCL_2='sqlogs'     # exclude 2

BACKUP_CS_3_TARGET_DIR='/home/rbackup/backup/charly'  # target directory
Diesen Pfad dann auf dem RUDI Eisfair anpassen zu /home/rbackup/backup/rudi

BACKUP_CS_3_TARGET_ARC='htdocs_charly'
Diesen Dateinamen auf RUDI Eisfair anpassen zu htdocs_rudi

Dieses sollte alles bei beiden Eisfair gemacht werden zwecks hoher Datenredudanz, aber kann auch je Bedürfnis angepasst werden.
Nicht zu vergessen ist, die Konfigurationen mit STRG+KX ab zu speichern.
Zum Testen führt man nun per "Backup-Zip Service" Menü den manuellen "Create Backup" >>> "Run Cron Backup manually" aus.
Wenn alles funktioniert sollten folgende Dateien in den Ordnern nach dem Backup-Zip Durchlauf vorhanden sein.

Auf CHARLY:
  • etc_1.part1.tar.gz im Ordner /home/rbackup/backup/charly
  • home_charly_1.part1.tar.gz im Ordner /home/rbackup/backup/charly
  • htdocs_charly_1.part1.tar.gz im Ordner /home/rbackup/backup/charly
  • die Ordner /home/rbackup/backup/rudi und /home/rbackup/backup/sonstiges sollten im Moment noch leer sein.
Auf RUDI:
  • etc_1.part1.tar.gz im Ordner /home/rbackup/backup/rudi
  • home_rudi_1.part1.tar.gz im Ordner /home/rbackup/backup/rudi
  • htdocs_rudi_1.part1.tar.gz im Ordner /home/rbackup/backup/rudi
  • die Ordner /home/rbackup/backup/charly und /home/rbackup/backup/sonstiges sollten im Moment noch leer sein.


ACHTUNG
Hinweis aus der Newsgroup spline.eisfair zu verschiedenen Backup-Zip Versionen und deren Archiven:
Vom 4.Juli.2006
Thomas Bork schrieb:
> Hans-Peter Seiler schrieb:
>
>> Leider kann ich mit tar 1.13.19 erstellte Multivolumes nicht mit tar
>> 1.15.91 restaurieren. Da gibt es scheinbar Kompatibilitätsprobleme
>> zwischen den beiden tarŽs. Umgekehrt geht es ebenfalls nicht.
>> Wenn Ihr also der Base 1.3.0 ein neues tar mitgebt, dann muß jeder der
>> Backup-ZIP 1.0.1 verwendet auf 1.0.2 updaten und alle mit der alten
>> Version erstellten Backups löschen, da ein Restaurieren dieser Backups
>> nicht mehr möglich ist.
> 
> Genau so steht das in den kommenden Release-Notes und ein Check weist
> darauf hin.
> Da nur 1.15.91 zuverlässig Pfade grösser 100 Zeichen geplittet über 2
> Teilarchive sichert und zurücksichert, gibt es auch keine andere
> Möglichkeit.


Jetzt kann man einen Test mit rsync machen ob alles schon so bisher funktioniert.
Dazu folgendes durchführen auf CHARLY als root user:

# cd /home/rbackup

# ./rsync-cron
Man sollte nun sehen können wie rsync eine ssh Verbindung aufbaut und Daten syncronisiert. Am besten auf beiden Eisfair Servern testen. Wenn alles geklappt hat sind auf jeden Eisfair nun alle oben beschriebenen Backup Archive jeweils auf beiden Servern vorhanden.

Schritt 8.

Da man jetzt in der Lage ist per rbackup User ssh Verbindungen aufzubauen aber trotzdem fast jeden Befehl dann auch durchführen könnte, habe ich nach einem Weg gesucht die ssh Verbindungen für den User rbackup nur auf den Befehl rsync zu beschränken.
Nach verschiedenen Lösungen, die ich bei meiner Websuche gefunden habe, entschloss ich mich für eine relativ einfache und zwar baut man das "beschränken" direkt in die "authorized_keys" Datei ein, die bei jedem ssh Login Versuch abgeglichen wird. Die Vorbereitung dafür hat man bereits im Schritt 5. mit dem Script  "rsync-validate" gemacht. Jetzt  muss man nur noch die "authorized_keys"  Datei auf beiden Servern wie folgt anpassen. Als root User wieder auf CHARLY Login machen:

# joe /home/rbackup/.ssh/authorized_keys

Suche den Schlüssel der mit =rbackup@CHARLY endet. Müsste, wenn alle Schritte hier im Howto richtig befolgt wurden, der in der ersten Zeile sein.

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAzAiumwEtrtrtjEP+
ZYJkFmNL+d5tD4lUqbydlKMYzbr01TK+J2fvKtfbVgw0NTnIbNU
IgZy/6P1TqVVqyKHcO0DtiZVXs28bLj1PVl6Nke5yw2hAS0WEV
43VFZWV6yLbm5RrYvelGti78ScXKK9D8upoUMmHPW+rIVxeR
QRk8U= rbackup@CHARLY


füge nun wie folgend hinzu:

command="/home/rbackup/rsync-validate" ssh-rsa AAAAB3Nza
C1yc2EAAAABIwAAAIEAzAiumwEtrtrtjEP+ZYJkFmNL+d5tD4lU
qbydlKMYzbr01TK+J2fvKtfbVgw0NTnIbNUIgZy/6P1TqVVqyKH
cO0DtiZVXs28bLj1PVl6Nke5yw2hAS0WEV43VFZWV6yLbm5Rr
YvelGti78ScXKK9D8upoUMmHPW+rIVxeRQRk8U
= rbackup@CHARLY

Speichere die Datei mit STRG+kx Tasten ab.

Das Gleiche wiederholt man nun bei RUDI aber diesmal mit dem Schlüssel der auf =rbackup@RUDI endet.

Nachdem Abspeichern der  "authorized_keys" Datei auf RUDI muss man sich auf jedem Server per root User ins "Eisfair setup" Menü anmelden.
Wechseln per "Service administration" in das "Edit Configuration" Menü von "Inet Service".
Und dieses Menü mit Abspeichern wieder verlassen, da der Eisfair irgend etwas macht, was ich bisher nicht herraus gefunden habe, so dass alles erst bei mir funktionierte, nachdem ich alle inet Dienste neu gestartet habe.
Einfaches ssh stop und start hatte bei mir nicht geholfen, sondern nur Aufruf des Edit Menü und erneutes abspeichern ohne Änderungen.

Schritt 9.

Als root User wieder auf die Server Login machen und testen ob nun der eingeschränkte Schlüssel des rbackup User mit rsync noch funktioniert:

# cd /home/rbackup

# ./rsync-cron

Wenn alles O.K. sind wir nun soweit die abschliessende Konfiguration für den cron job zu machen.
Wechseln wieder als root User per Befehl setup in das "Service administration" Menü zwecks "Cron Daemon" >>> "Edit Configuration"

START_CRON                   =  yes  # Muss gestartet sein damit rsync dann wie gewünscht automatisch synchronisiert

CRON_N                       =  2  # Den cron job hinzufügen
...
CRON_2_TIMES               =  30 5 * * 1  # jeden Montag morgen um 5:30Uhr wird rsync aufgerufen.  
                                  
CRON_2_COMMAND             =  /home/rbackup/rsync-cron  # gibt den Pfad zum rsync script an.

Schlusswort:

Wie man sieht, lassen sich also auch Backup Lösungen für den Eisfair realisieren mit echter Redundanz, das alles noch auf einen RAID0+1 und es zeigt sich, wie faul man als Administrator doch eigentlich sein kann ;)
Denn das alles hier läuft von nun ab völlig automatisch und man wird nur noch im Fall der Fälle gebraucht für die Restores der Backups, die man gut aus den einzelnen Files auch extrahieren kann.
Kein Hausbrand kann nun mehr unsere Eisfair Schachmatt legen, da alles Wichtige, soweit es konfiguiert wurde, gespiegelt auf einen 2ten Eisfair liegt, der natürlich sinnvollerweise nicht im gleichen Gebäude steht. Bei mir stehen CHARLY und RUDI ca 4,5km weit entfernt von einander.
Jeder kann ja leicht mein Beispiel auf seine Bedürfnisse anpassen und erweitern durch die Konfiguration von Backup-Zip und eben auch durch die rsync-index Datei zwecks Include/Exclude Regeln.
Ich werde jedenfalls in Zukunft jeden von mir betreuten Eisfair so über ein "Backup Netzwerk" zusammen schliessen und sichern ;)


Quellen:

[1] Eisfair inet package Dokumentation
[2] rsync 
[3] rsync Beitrag spline.eisfair.dev Newsgroup
[4] Eisfair Backup-Zip Package Dokumentation
[5] dyndns Package für Eisfair
[6] manpage  rsync
[7] manpage ssh
[7] Engl. rsync und ssh Tutorial
[8] dt. rsync und ssh Tutorial
[9] Linux Magazin Artikel "Server Spiegelei"

(c) 03.07.2006 Carsten.Hermes@hermestec.de, Deutsch Korrekturen von Fabian Toerner, Thomas Lutze