Genau das ist mit dem Tool rsync
(remote synchronization) möglich: Der Name deutet schon an, dass das Programm auch entfernte PCs als Ziel (oder Quelle) des Datentransfers akzeptiert. rsync
versteht teilweise dieselben Optionen wie cp
; Sie können darum für die bisherigen Beispiele einfach cp
durch rsync
ersetzen und z. B. das Home-Verzeichnis mit
rsync -av /home/esser /media/Backup-Platte/Backup/
sichern; an den Anfang gehört eventuell wieder ein sudo
(s. o.). Über die Option -v
gibt rsync
den Namen jeder Datei aus, die das Tool kopiert; wenn Ihnen stattdessen eine Zusammenfassung lieber ist, lassen Sie die Option -v
weg und ergänzen die Langoption --stats
(Abbildung 2).

Backup ins Netz
Steht Ihnen ein regelmäßig über das Netzwerk erreichbarer Rechner zur Verfügung – z. B. ein weiterer Linux-PC daheim oder ein V-Server oder Root-Server bei einem Hostinganbieter [1] –, können Sie rsync
dazu verwenden, das Backup auf diesen Rechner zu übertragen. Vorher sollten Sie sicherstellen, dass via Secure Shell (SSH) problemlos der Zugriff auf den Rechner funktioniert. Testen Sie zunächst, ob Sie sich mit ssh rechnername
auf der entfernten Maschine anmelden können (siehe Shell-Tipps in dieser Ausgabe). Wenn das klappt, legen Sie auf dem entfernten PC einen Unterordner Backup an und sichern dann mit dem Kommando
rsync -avz /home/esser rechnername:Backup/
Die neu hinzugekommene Option -z
sorgt dafür, dass rsync
die Daten vor dem Transport komprimiert. Im lokalen Netzwerk läuft die Übertragung eventuell schneller, wenn Sie auf die Komprimierung verzichten, bei Internetverbindungen sind Sie mit -z
in der Regel schneller.
Falls Sie auf dem entfernten Rechner einen anderen Benutzernamen haben, müssen Sie diesen noch voranstellen, so dass sich der Befehl
rsync -avz /home/esser username@rechnername:Backup/
ergibt. In dem Fall bietet es sich aber an, eine SSH-Konfiguration für den Rechner anzulegen, dazu bearbeiten (oder erzeugen) Sie die Datei config im versteckten Unterordner .ssh Ihres Home-Verzeichnisses und tragen die folgenden Zeilen ein:
Host rechnername Hostname IP-Adresse User username
Die Hostname-Zeile können Sie weglassen, wenn Ihr System den entfernten Rechner auch so am Namen erkennt. Sie können das Feature aber auch nutzen, um einen sehr langen Namen (z. B. Namen in der Form s893743.provider.de) abzukürzen: Haben Sie z. B. einen V-Server dieses Namens mit dem Benutzernamen u893743, könnten Sie
Host backup Hostname s893743.provider.de User u893743
eintragen und dann für die Datensicherung einfach
rsync -avz /home/esser backup:Backup/
statt
rsync -avz /home/esser u893743@s893743.provider.de:Backup/
eingeben – denn anstelle einer IP-Adresse darf auch ein (auflösbarer) Rechnername im Hostname-Feld stehen.
Gelöschte Dateien behalten?
Das Verhalten aller bisher vorgestellten Befehle ist übrigens konservativ in dem Sinne, dass lokal gelöschte Dateien nicht aus dem Backup entfernt werden, wenn Sie dieses aktualisieren. Wenn Sie das nicht möchten, können Sie rsync
die Langoption --delete
mitgeben: Dann löscht es Ordner und Dateien aus dem Backup, die es auf dem Ursprungsrechner nicht mehr gibt. Das cp
-Kommando beherrscht keinen vergleichbaren Trick, was an den verschiedenen Aufgaben der Tools liegt: cp
ist zum Kopieren da, während rsync
synchronisiert, also Verzeichnisbäume synchron hält, was auch ein Löschen nicht mehr benötigter Dateien bedeuten kann.
Sie haben nun das notwendige Handwerkszeug, um Backups schnell auf der Konsole zu erledigen, ohne umständlich eine GUI-Anwendung zu starten und zu konfigurieren. Die für die Datensicherung nötigen Befehle können Sie bei Bedarf auch in eine Shell-Skript-Datei schreiben, um die Parameter nicht jedesmal nachschlagen zu müssen. Ansonsten empfiehlt sich ein Blick in die Manpages von rsync
und cp
, denn die Tools bieten noch einige weitere Optionen. (hge)
Tipp: DVD-Upgrade
Die Aufgabenstellung: Ein 4,5 GByte großes ISO-Image mit einer Linux-Distribution soll von einem Server herunter geladen werden, auf den man per SSH Zugriff hat.
Auf dem Client befindet sich bereits ein ISO-Image dieser Distribution – allerdings handelt es sich dabei um die letzte Betaversion. Die Änderungen zwischen den beiden Versionen sind nicht gravierend, es wurden einige Pakete durch fehlerkorrigierte ausgetauscht.
Mit rsync
ist es möglich, das ISO-Image der Betaversion auf die fertige Version zu aktualisieren – ohne das neue Image komplett herunterzuladen.
Auf dem Server liegt das Image (distri-2012-1-final.iso direkt in Ihrem Home-Verzeichnis, und auf dem Client haben Sie die Betaversion (distri-2012-1-beta.iso) auch im Home-Verzeichnis liegen. Vom Client aus können Sie sich über ssh server
auf dem Server anmelden. Sie könnten also mit dem Befehl
scp server:distri-2012-1-final.iso .
die Datei kopieren – würden damit aber das gesamte Image übertragen. Stattdessen erstellen Sie zunächst auf dem Client eine Kopie Ihrer Betaversion, der Sie bereits den Namen der finalen Version geben, und rufen dann rsync
auf:
[client]$ cp distri-2012-1-beta.iso distri-2012-1-final.iso [client]$ rsync --partial --progress --stats server:distri-2012-1-final.iso . distri-2012-1-final.iso 4489568256 100% 9.53MB/s 0:07:29 (xfer#1, to-check=0/1) Number of files: 1 Number of files transferred: 1 Total file size: 4489568256 bytes Total transferred file size: 4489568256 bytes Literal data: 1491000048 bytes Matched data: 2998568208 bytes File list size: 30 File list generation time: 0.008 seconds File list transfer time: 0.000 seconds Total bytes sent: 507478 Total bytes received: 1491371357 sent 507478 bytes received 1491371357 bytes 2539368.23 bytes/sec total size is 4489568256 speedup is 3.01
Besonders informativ ist hier die letzte Zeile: Der „Speedup“ ist 3,01, das bedeutet, dass rsync
nur ein Drittel der Daten übertragen hat.
Auch einige Downloadserver von Distributoren unterstützen den Download mit rsync
– wenn Sie einen solchen finden, können Sie Images mit rsync
von dort herunterladen und ebenfalls ältere Versionen des Images zum Aktualisieren nutzen.
Für OpenSuse werden Sie z. B. unter rsync.opensuse.org fündig:
[esser@quad:~]$ rsync rsync://rsync.opensuse.org/ This is rsync.opensuse.org, public rsync server of openSUSE.org, limited to 50 connections. [...] opensuse-full The download.opensuse.org tree starting at /pub without daily devel snapshots opensuse-full-with-factory The download.opensuse.org tree starting at /pub including daily devel snapshots [...] [esser@quad:~]$ rsync rsync://rsync.opensuse.org/opensuse-full/ [...] drwxr-xr-x 21 2009/11/16 18:41:47 . drwxrwxr-x 140 2012/09/22 21:14:38 opensuse
Wie Sie im Beispiel sehen, versteht das Tool spezielle rsync
-URLs, die mit rsync:// beginnen (und ansonsten wie normale Weblinks aufgebaut sind). Wenn Sie ein Verzeichnis auf dem Server (und keinen Ort für das lokale Ziel) angeben, zeigt rsync
die auf dem Server liegenden Dateien und Unterordner an.
Ein Mirror für Ubuntu ist z. B. http://rsync://mirror.netcologne.de/ubuntu/. Die Distributionen verwalten auch Listen mit Spiegelservern, die rsync
unterstützen, Sie finden sowohl für Ubuntu [3] als auch für OpenSuse [2] zahlreiche Angebote (Abbildung 3). Verwenden Sie nur Server, in deren Protokollliste auch rsync auftaucht. Für Kubuntu konnten wir keinen vergleichbaren Service entdecken, lediglich ältere Versionen (bis 11.10) fanden wir auf einigen Ubuntu-Mirrors.
Infos
[1] Artikel zu V- und Root-Servern: Hans-Georg Eßer, „Hier bin ich Root“, EasyLinux 02/2012, S. 78 ff.
[2] OpenSuse-Mirror-Liste: http://mirrors.opensuse.org/
[3] Ubuntu-Mirror-Liste: https://launchpad.net/ubuntu/+cdmirrors
Hinterlasse einen Kommentar