Sicherung per Unison
Im privaten Bereich laufe ich noch immer in Gefahr, dass ich die Geschichte mit der Sicherung meiner Daten zu wenig ernst nehme. Schon einige male habe ich Daten verloren, teilweise konnte ich sie wieder herstellen, teilweise nur einen Teil davon und es ist auch schon vorgekommen, dass das Sicherungsmedium nicht lesbar war oder schlicht keine Sicherung bestanden hat. Wenn ich meine Sicherungen sauber und zuverlässige fahren will, brauche ich ein einfaches Tool, das selbständig funktioniert und sichere Backups erstellt. Dazu gibt es ja eine ganze Reihe von Programmen für Linux.
Eine Möglichkeit ist, die Daten mit einem andern Gerät zu synchronisieren. Dazu gibt es nebst rsync die Anwendung Unison, die rsync (das Netzwerk-Protokoll, nicht die zuvor genannte Anwendung) nutzt. Ganz gut gefällt mir daran, dass damit mehrere Rechner synchron gehalten werden können und dass es auf einfache, aber recht sichere Mechanismen wie SSH zurückgreift. Ich will Daten von meinem Laptop regelmässig in ein Verzeichnis auf meinem Server schreiben, beide Geräte befinden sich im selben Netzwerk. Dazu habe ich zunächst auf beiden Geräten den quelloffenen SSH-Server installiert:
sudo apt-get install openssh-server
Der SSH-Server ist sogleich nach der Installation einsatzbereit. Als vorteilhaft bei einer SSH-Verbindung erachte ich, dass keine Laufwerke gemountet werden müssen. Danach installierte ich auf dem Server die Unison-Anwendung, allerdings ohne grafische Unterstützung:
sudo apt-get install unison
Auch hier muss weiter nichts mehr eingestellt werden, den Rest der Arbeit erledigt dann die Installation auf dem Client. Auf jenem wollte ich dann aber die Unison-Version für einen X-Server und installierte deshalb:
sudo apt-get install unison-gtk
Als abschliessende Vorbereitung braucht es jetzt nur noch ein Verzeichnis auf dem Server, worauf der User, der bei der Sicherung angegeben wird, Lese- und Schreibrechte besitzt. Ich habe dazu bei den variablen Daten ein Verzeichnis erstellt:
sudo mkdir /var/daten
sudo chmod 0764 /var/daten
Der Benutzer muss natürlich in der Gruppe sein, um auf die Daten zugreifen zu können. Möchte man diese Einstellungen nicht vornehmen, sollte man die Daten einfach in das Home-Verzeichnis des entsprechenden Users schreiben.
Und dann kann es schon losgehen. Beim Aufruf von Unison in der grafischen Version (auf dem Client, ab dem die Daten gesichert werden sollten) über das Gnome Menü unter Anwendungen / Zubehör / Unison erscheint zunächst ein Fenster, bei dem der lokale Pfad der zu sichernden Daten angeben wird. Will man mehrere Verzeichnisse aus verschiedenen Orten sichern, erstellt man einfach mehrere Profile.

Anschliessend folgt der Dialog für das Zielgerät. Dort habe ich SSH als Protokoll gewählt und den Rechner, das Verzeichnis sowie den User angegeben. Die Portnummer habe ich nicht verstellt.

Damit erstellt Unison zunächst ein Art Inventar der zu synchronisierenden Daten, das kann etwas dauern. Danach werden die Dateien geschrieben. Beim zweiten Aufruf prüft Unison auf beiden Seiten die Versionen und Vorkommnisse der Daten und synchronisiert in beiden Richtungen (falls auf dem Server die Daten verändert würden) den Datenbestand. Dabei wird nur jener Teil der Datenblöcke kopiert, die sich verändert haben. Und das ist zugleich der Vorteil der Geschichte, dass Unison nicht die gesamte Datei bei einer Veränderung kopiert, sondern bloss den Teil daraus, der sich tatsächlich verändert hat; Unison arbeitet also auf Blockebene und nicht auf dem Prinzip der logischen Dateien.

Damit sind die Daten synchron. Ruft man Unison ein weiteres mal auf, begüsst die Anwendung den Benutzer mit der Auswahl der bestehenden Profile. Dort kann man dann ein Neues erstellen, worauf sich der zuvor beschriebene Vorgang wiederholt oder ein bestehende aufrufen.

Will man nun eine Sicherung direkt aufrufen, so reicht es, wenn im Terminal unison gefolgt vom Profilnamen (steht im Homeverzeichnis unter ~/.unison/ProfilName.prf) eingetippt wird. Dazu lässt sich auch ein Desktop- oder Panel-Symbol einrichten. Bei einer SSH-Verbindung muss dann noch das Kennwort eingegeben werden. Will man auch dies automatisieren, zum Beispiel per Cron-Job, dann braucht es dazu ein dsa-Schlüssel, damit die Kennwort-Eingabe wegfällt. Auf meinem “Arbeitsrechner” will ich aber keine solchen Cron-Jobs, sondern möchte einfach und schnell die Sicherung von Hand aufrufen können. Und mit Unison klappt das ganz gut.


15. Mai 2009 um 09:06:11 Uhr
Hallo,
interessanter Bericht. Datensicherung ist ja ein Thema, mit dem man sich nicht gerne auseinander setzt.
Du schreibst, dass die Daten bidirektional synchronisiert werden, wenn auf einer Seite Änderungen vorgenommen werden. Wie verhält es sich, wenn auf beiden Seiten geändert wurde?
Gibt es eine Benutzerabfrage, bekommt eine Datei einen Namenszusatz oder gewinnt einfach die zuletzt bearbeitet Datei?
Das wäre eine Interessante Sache, gerade, wenn man sich von außen auf seinen Server einloggt, um mit den Daten zu arbeiten.
15. Mai 2009 um 10:52:02 Uhr
Gordon, Unison, beziehungsweise das Sync-Protokoll synchen ja nicht auf Dateiebene, sondern auf der tiefer unten liegenden Blockebene. Jene Blöcke werden so zusammengestellt, dass immer die neuesten davon aus beiden Seiten benutzt werden. Ist diese Zusammenstellung nicht per Automatismus möglich, frägt Unison nach. Sollte man einmal testen. was dann passiert
15. Mai 2009 um 11:08:30 Uhr
Hallo Roman,
will man einen alternativen SSH Port benutzen, kann man ihn folgendermaßen hinzufügen:
ssh://benutzer@rechner:Port//pfad/fuer/sync
(in der ~/.unison/profil.prf ändern).
Gruß, Stephan
15. Mai 2009 um 11:50:27 Uhr
Hallo Roman,
das sollte man meiner meinung nach wirklich testen.
Denn wenn einfach die aktuellste Änderung gewinnt, kann ein Klick auf ein Icon schnell (mit unter wichtige) Änderungen verschwinden lassen.
Wenn allerdings nachgefragt wird, erschwert dies ein automatisches synchronisieren.
15. Mai 2009 um 13:29:08 Uhr
Unison ist wirklich ein sehr schönes Programm, wenn man zwischen PCs seine Daten abgleichen will. Ich verwende es schon länger um meinen Laptop und meinen PC abzugleichen und bin sehr zufrieden damit.
Was man vielleicht noch sagen kann: Wenn man die Profil-Datei von Hand bearbeitet hat man noch einige mehr Optionen. Mann kann z.B. mehrere Verzeichnisse angeben, Unterverzeichnisse oder bestimmte Dateinamen/-endungen wieder ausschließen usw. Unison ist wirklich sehr mächtig und gleichzeitig mit der GUI, diff Möglichkeiten usw. sehr Benutzerfreundlich.
15. Mai 2009 um 14:38:19 Uhr
Ich benutze Unison schon lange um Daten zwischen meinen beiden PCs und dem Laptop zu synchronisieren. Sollte sich eine Datei auf beiden Rechnern geändert haben wird diese nicht automatisch synchronisiert. in der Oberfläche erscheint dann ein ? bei der Datei, und der Benutzer kann auswählen welche Version verwenden soll. Man kann auch einen Diff erstellen und die Unterschiede sehen. Das kommt aber bei mir selten vor, wenn ich den Rechner wechsle wird einfach schnell synchronisiert…
12. Januar 2010 um 12:16:33 Uhr
[...] werden sollen, kommen auf der USB-Festplatte in den Ordner Archiv. Zusätzlich nutze ich noch Unison, um meine Daten mit dem lokalen Server zu synchronisieren. Ganz gute Programme sind sbackup oder [...]
21. Februar 2011 um 17:04:54 Uhr
[...] dieses Artikels erzeugen Ähnliche Artikel15. Mai 2009 — Sicherung per Unison (7)30. März 2009 — partimage für Ubuntu einsetzen (4)21. Mai 2009 — MySQL-Dump auf ein [...]