Sicheres Backup mit Tar und SSH übers Netz
tar (ursprünglich “Tape-Archiver”) ist ein weit verbreitetes Archivierungstool, mit dem relativ einfach Backups erstellt werden können. Erfahren Sie mehr darüber im Tipp von unserem Fachbereichsleiter Michi Zaugg.
tar (ursprünglich “Tape-Archiver”) ist ein weit verbreitetes Archivierungstool, mit dem relativ einfach Backups erstellt werden können. “tar” hat sehr viele Optionen, in der einfachsten Verwendung wird aber eigentlich nur “c” für “create archive” und “x” für “extract archive” verwendet. “tar” lässt sich einfach mit “|” (Pipes) verwenden, indem auf Standard-Out geschickt und von Standard-In gelesen wird. Kombiniert man “tar” mit” ssh”, kann man einfach sichere Backups übers Netz realisieren.
tar
tar cf filename.tar Pfadname
So wird “tar” verwendet, um ein Backup in eine Datei namens “filename.tar” vom Verzeichnis Pfadname zu erstellen. Es kann zusätzlich “z” (gzip) oder “j” für die etwas stärkere “bzip”-Variante für die Kompression gewählt werden. Falls “gzip” zusätzlich angewandt wird, sollte die Dateiendung “.tar.gz” heissen. Mit “bzip” sollte “.tar.bz2” verwendet werden. Nachdem das Tarfile erstellt wurde, kann man dieses mit
tar tvf filename.tar
ansehen. Allenfalls mit den Optionen “z” oder “j”, wenn zusätzliche Komprimierung verwendet wurde.
ssh
Mit SSH kann das Backup über das Netz transportiert werden.
tar cf - Pfadname | ssh zielhost "cat - > pfadzumbackup/filename.tar"
“-” wird verwendet, um das Backup auf Standard-Out zu schicken, und auf der anderen Seite auf dem Ziel-Host “-“, um in eine Datei umzuleiten (Standard-In).
~/.ssh/config
In diese Konfigurationsdatei im Heimverzeichnis des Benutzers, der das Backup ausführen möchte, können Optionen für die SSH-Verbindung auf den Host (hier Ziel-Host), der das Backup entgegennimmt, hinterlegt werden. Zum Beispiel:
host zielhost
HostName 1.2.3.4
User backup
Compression yes
Compressionlevel 9
Es bietet sich zusätzlich an, für diese Verbindung einen SSH-Schlüssel zu verwenden. Dieser kann mit “ssh-keygen” generiert und mit “ssh-copy-id” auf den Ziel-Host kopiert werden. In der Datei “.ssh/config” wird dieser mit der Option “IdentityFile ssh-key-file” angegeben. Das Ganze wird folgendermassen ausgeführt:
backuphost$ ssh-keygen
backuphost$ ssh-copy-id backup@zielhost
Nun sollte man sich ohne Passwort auf den Ziel-Host mit dem Benutzer-Backup anmelden können (der Benutzername “backup” muss auf dem Ziel-Host existieren!). Die “ssh/.config”-Datei könnte nun so aussehen:
host zielhost
HostName 1.2.3.4
User backup
Compression yes
Compressionlevel 9
IdentityFile ~/.ssh/id_rsa
Fazit
Mit den obengenannten Boardmitteln kann einfach ein Backup erstellt werden. Ebenfalls lässt sich dies über ein Skript und mit der Ausführung über “cron” automatisieren. Dies ist beliebig erweiterbar, z.B. mit Logfile, Datum auf dem Tarfile etc. Auch die Flexibilität mit allen möglichen Optionen von tar ist gegeben.