Nachdem ich letztens meinen Server wieder neu Aufgesetzt habe, habe ich mir auch gleich die Zeit genommen, mein Backupscript zu überarbeiten. Seit einiger Zeit schon benutzte ich das HiDrive von Strato als eine Art „Backup and Forget“ Lösung für meine Datensicherungen so habe ich mein Script auch hierfür angepasst, denn das HiDrive unterstützte das Public-Key-Verfahren zur Authentifizierung.
Um dies auch nutzten zu können benötigen wir etwas Vorabeit, sprich wir müssen erst die benötigten Schlüssel erstellen. Diese Schlüßel müssen für den Benutzter generiert werden, der das Script später auch ausführt. In meinem Fall ist das root, da ich einige Dienste (wie z.B. TeamSpeak) vor der Sicherung beende.
Als root geben wir also den Befehl: „ssh-keygen -t rsa“ ein und bestätigen alle darauffolgenden Abfragen einfach mit Enter. Das sollte so aussenen:
user@client:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 24:55:ee:67:83:72:82:55:5f:b9:b4:09:2a:fa:56:a1 user@client.local The key's randomart image is: +--[ RSA 2048]----+ | | | | | | | + . | | S E | | . + + | | .o . o.| | o.oo. oo| | ==o.BO+| +-----------------+ user@client:~$
Im Verzeichnis .ssh wurden (unter anderem) die Dateien „id_rsa“ und „id_rsa.pub“ erstellt. Den öffentlichen Schlüßel (id_rsa.pub) laden wir dann in der HiDrive Weboberfläche hoch.
Kommen wir zum eigentlichen Script, das ihr hier runter laden könnt: sftp_backup_pub1
Das müssen wir noch etwas modifizieren. Das meiste ist ziemlich selbsterklärend, SQL_USER und SQL_PW ist der MySQL benutzter um die Datenbanken zu sichern. FTP_IP braucht nicht geändert werden, soll das Script mit HiDirve betrieben werden. FTP_USER ist der HiDrive Benutzter und FTP_PATH ist HiDirve Verzeichnis in dem die Daten abgelegt werden. Achtet darauf das das Verzeichnis bereits angelegt wurde. Sonst kann es zu Fehlern kommen.
Die befehlszeile um Verzeichnisse zu Sichern ist hier:
tar cvz -f $BACKUPPATH/etc_$DATE_VAR.tgz /etc/
In diesem beispiel wird das /etc Verzeichnis mit tar komprimiert und als tgz Datei in das Backup-Verzeichnis abgelegt. Kopiert und modifiert diese Zeile für alle Verzeichnisse, die ihr sichern wollt. Wenn Dienste vorher beendet werden sollen gebt dies vor der betreffenden Zeile an und startet den Dienst nach der Sicherung wieder.
Als nächstes sichern wir die MySQL Datenbanken.
mysqldump --user=$SQL_USER --password=$SQL_PW --databases "DB_NAME" > "$BACKUPPATH/DB_NAME_$DATE_VAR.sql" gzip "$BACKUPPATH/DB_NAME_$DATE_VAR.sql"
Wie vorher auch könnt ihr beide Zeilen nach belieben kopieren und anpassen. Als einziges müsst ihr den Wert „DB_NAME“ in den Datenbanknamen ändern den ihr sichern wollt. Achtet darauf das ihr alle drei ändert. Die gzip Zeile komprimiert die Datenbank um Speicherplatz zu sparen.
Mehr braucht ihr eigentlich nicht anpassen, als nächstes beginnt das Script alle Daten auf das HiDrive hoch zu laden und löscht danach die lokalen Dateien.
Quellen: