2010 - Die Grundidee : die Daten automatisch von einem Quell-Server auf einen entfernten Backup-Server schicken.
Eine Frage von Komfort und Bequemlichkeit - ein Automatismus als shell-script :
Wie verschiebe ich (als Beispiel) eine VM oder eine oder mehrere Sicherungsdatei(en) von einem Server auf den neuen Server oder auf den Backup-Server ??? - Unsere Backups sollen nicht nur (halb-) automatisch und sicher laufen. Die Daten unserer Server müssen auch unbedingt periodisch in oder auf eine "entfernte" Lokation (zum Beispiel eine lokale Linux-NAS Station bei uns im Haus in Wiesbaden) übertragen werden.
Nachtrag : Dabei ist große Vorsicht angebracht, weil hochgefahrere aktive root-Filesysteme mit vielen Symlinks nicht so einfach kopiert und restauriert werden können.
Bei virtualisierten Servern muß dann (vom Gastgeber - dem Host - aus) der "Gast" erst abgeschaltet (runter gefahren) werden und dann gesichert werden, weil er im Schadensfall so auch wieder rekonstruiert werden muß.
Und wie wir das gelöst haben, kommt jetzt.
.
SCP ist das sogenannte Linux "secure copy programm".
Dieses Kopierprogramm nutzt die gleichen Verschlüsselungs-"mechanismen", die auch SSH putty benutzt. Sie können per scp Dateien von SSH-Server zu SSH-Server kopieren. Doch wir wollen es per Cronjob und Shell-Scripten automatisieren und auch Nachts laufen lassen.
.
Diese SCP Methode soll sowohl für komplette XEN-VMs funktionieren wie auch für die nackten Typo3 Instanzen auf einem Webserver.
.
Über die Automatismen
Mitten in unserem "copyhome" Script und in anderen Scripten befindet sich die Zeile mit dem scp (secure cp) Kommando.
Doch Nachts ist niemand da, der das Passwort für die sichere Verbindung eintippt. Um das zu automatisieren, muß man die Schlüssel auf dem Quell-Server erzeugen und auf dem Ziel-Server hinterlegen.
Die Vorbereitung zum automatischen scp handshake per SSH.
Das machen wir so:
Auf dem Quell-Server (Source odr Sever 1) erzeugt man mit "sudo ssh-keygen -t dsa" und 3 x "ENTER" den gewünschten Schlüssel und damit erhält man auf diesem Server den Keyfile im Verzeichnis "/root/.ssh/id_dsa.pub".
Am putty-Bildschirm (meiner Fernkonsole) sieht es so aus :
[server-IP-root] ~ $ sudo ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
4a:5a:f1:97:fd:db:ff:e0:de:e0:b3:99:33:19:02:10 root@www51.ipw.net
The key's randomart image is:
+--[ DSA 1024]----+
| E. |
| . |
| . . |
| o .o |
| o S o.. |
| + . . ... |
| . . .+o |
| o=O |
| .O=B|
+-----------------+
[server-IP-root] ~ $
Diesen "Schlüssel" auf das Ziel kopieren :
Dieser Schlüssel (also der nackte Inhalt der Datei) muß muss dann (mit winscp oder anderen Hilfsmitteln) auf den Zielrechner (Destination oder Server 2) in den neu anzulegenden File "/root/.ssh/authorized_keys" einkopiert werden.
Dieser File "authorized_keys" kann dann sogar mehrere solcher keys (Schlüssel) untereinander sowohl von mehreren Usern und als auch mehreren Quell-Servern enthalten (man muß das editieren).
(Zum Editieren ist der "joe" nicht so gut geeignet, weil er diese langen Zeilen am Bildschirmende abtrennt und einfach nicht überträgt.)
Der Schlüssel ist an den Hostnamen und Usernamen gebunden. Bei uns laufen alle diese "copyhome" Skripte als "root"! Zum Debuggen kann man SCP mit der Option "-v" aufrufen.