GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So synchronisieren Sie Dateien mit Unison unter Linux

Dieses Tutorial führt Sie durch die Installation des Unison-Dateisynchronisierungstools unter Linux und die Synchronisierung von Dateien mit Unison zwischen zwei verschiedenen Verzeichnissen und/oder Festplatten auf demselben System und zwei verschiedenen Linux-Rechnern über ein lokales Netzwerk.

Einführung in Unison

Einheit ist kostenlos, Open Source, plattformübergreifend und bidirektional Datei-Synchronisationstool. Es wird verwendet, um zwei Kopien von Dateien und Verzeichnissen auf zwei verschiedenen Systemen oder auf verschiedenen Festplatten auf demselben System zu speichern.

Die Kopien von Dateien und Verzeichnissen werden separat geändert und dann auf den neuesten Stand gebracht, indem die Änderungen in jeder Kopie an die andere weitergegeben werden.

Einfach ausgedrückt, alle Änderungen an einem Standort werden an anderen Standorten repliziert und umgekehrt.

Da es sich um eine plattformübergreifende Anwendung handelt, können Sie Dateien und Verzeichnisse zwischen Computern synchronisieren, die mit unterschiedlichen Betriebssystemen ausgeführt werden.

Beispielsweise können Sie Dateien, die auf einem Linux-Rechner gespeichert sind, mit einem Windows- oder Unix-Rechner synchronisieren und umgekehrt. Nicht nur der Dateiinhalt, auch der Dateibesitz und die Berechtigungen werden ebenfalls synchronisiert.

Wenn der Inhalt auf beiden Replikaten unterschiedlich ist, führt dies zu einem Konflikt. Unison erkennt solche Konflikte und zeigt sie an. In diesem Fall müssen Sie Unison anweisen, welches Replikat das andere überschreiben soll. Updates, die keinen Konflikt verursachen, werden automatisch weitergegeben.

Unison funktioniert gut mit jedem Computerpaar, das mit einem lokalen Netzwerk oder dem Internet verbunden ist. Die Dateien werden über ein verschlüsseltes ssh mit einem Remote-System synchronisiert Verbindung.

Ein weiteres bemerkenswertes Merkmal von Unison ist, dass es gut über langsame Verbindungen wie PPP-Verbindungen funktioniert. Ähnlich wie rsync , überträgt Unison nur die Teile einer Datei, die geändert wurden.

Die integrierte Implementierung des rsync-Algorithmus von Unison macht die Übertragung von Aktualisierungen auf vorhandene Dateien sehr schnell.

Unison ist ein Programm auf Benutzerebene, daher besteht keine Notwendigkeit, den Kernel zu ändern oder Superuser-Privilegien auf einem der beiden Hosts zu haben.

Das Unison-Programm wurde von Benjamin C. Pierce erstellt und ist unter der GPL-Lizenz veröffentlicht. Es funktioniert unter GNU/Linux-, Windows- und Unix-Plattformen.

Installieren Sie Unison unter Linux

Unison ist in den Standard-Repositories in den offiziellen Repositories vieler Linux-Betriebssysteme verfügbar.

Um Unison unter Alpine Linux zu installieren, führen Sie Folgendes aus:

$ sudo apk add unison

Installieren Sie Unison auf Arch Linux und seinen Varianten wie EndeavourOS und Manjaro Linux:

$ sudo pacman -S unison

Debian, Ubuntu, LinuxMint:

$ sudo apt install unison

Fedora:

$ sudo dnf install unison

CentOS 7:

Aktivieren Sie zuerst [EPEL] Aufbewahrungsort:

$ sudo yum install epel-release

Und dann unisono installieren:

$ sudo yum install unison

openSUSE:

$ sudo zypper install unison

Es gibt auch eine einfache grafische Oberfläche namens unison-gtk ist für diejenigen verfügbar, die GUI gegenüber CLI bevorzugen. Es ist in den Standard-Repositories einiger Linux-Distributionen verfügbar.

Unter Alpine Linux können Sie Unison-gtk mit folgendem Befehl installieren:

$ sudo apk add unison-gui

Installieren Sie unter Arch Linux und seinen Varianten Unison-gtk mit dem Befehl:

$ sudo pacman -S unison-gtk2

Wenn Sie sich auf einem Debian-basierten System befinden, installieren Sie es mit dem folgenden Befehl:

$ sudo apt install unison-gtk

Bitte beachten Sie, dass Sie Unison auf allen Systemen installieren müssen, die Sie synchron halten möchten, wenn Sie Dateien zwischen zwei verschiedenen Systemen synchronisieren möchten. Außerdem wird die gleiche Version auf beiden Systemen empfohlen.

Dateien mit Unison unter Linux synchronisieren

Wir können Unison in den folgenden drei verschiedenen Modi verwenden:

  1. Synchronisieren Sie Dateien, die in verschiedenen Verzeichnissen auf demselben Computer gespeichert sind,
  2. Synchronisieren Sie Dateien und Verzeichnisse, die auf verschiedenen Festplatten auf demselben Computer gespeichert sind,
  3. Dateien und Verzeichnisse zwischen lokalen und entfernten Rechnern synchronisieren:
    • Synchronisieren Sie Dateien mit einem Remote-Computer über eine direkte Socket-Verbindung,
    • Synchronisieren Sie Dateien mit einem Remote-Computer mit SSH.

1. Synchronisieren Sie Dateien, die in verschiedenen Verzeichnissen auf demselben Computer gespeichert sind

Für den Zweck dieser Anleitung werde ich zwei Stammverzeichnisse (d. h. Replikate) erstellen, nämlich directory1 und directory2 .

$ mkdir ~/directory1
$ mkdir ~/directory2

Legen Sie einige Inhalte in einem der oben genannten Verzeichnisse ab. Ich habe einige Dateien und Verzeichnisse in directory1 gespeichert .

Werfen wir einen Blick auf den Inhalt von directory1 :

$ ls -ltRF directory1/

Beispielausgabe:

directory1/:
total 7780
drwxrwxr-x 2 sk sk    4096 Oct  2 15:35 dir1/
-rw-rw-r-- 1 sk sk 7779007 Sep 25 16:51 file2
-rw-rw-r-- 1 sk sk  179765 Aug 17 12:51 file1

directory1/dir1:
total 140
-rw-rw-r-- 1 sk sk 141729 Aug  6 22:34 file3

Wie Sie sehen können, habe ich einen Ordner namens dir1 und zwei weitere Dateien, nämlich file1 und file2 im Stammverzeichnis von directory1 . Innerhalb von dir1 , gibt es eine weitere Datei namens file3 .

Und das directory2 Replikat hat keinen Inhalt.

$ ls -ltRF directory2/
directory2/:
total 0

Lassen Sie uns diese beiden Verzeichnisse synchronisieren, indem wir unisono mit dem Befehl:

verwenden
$ unison directory1/ directory2/

Sie werden gefragt, ob Sie mit der Synchronisierung des Inhalts von directory1 fortfahren möchten mit directory2 . Drücken Sie einfach ENTER Schlüssel. Als nächstes fordert Unison Sie auf, die zu synchronisierenden Dateien und Verzeichnisse zu bestätigen. Drücken Sie ENTER oder drücken Sie f Taste, um die Dateien und Ordner zu bestätigen, die Sie synchronisieren möchten. Drücken Sie abschließend y und drücken Sie ENTER Taste, um mit der Verbreitung von Updates fortzufahren.

Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
	/home/sk/directory1
	/home/sk/directory2
This can happen either
because this is the first time you have synchronized these roots, 
or because you have upgraded Unison to a new version with a different
archive format.  

Update detection may take a while on this run if the replicas are 
large.

Unison will assume that the 'last synchronized state' of both replicas
was completely empty.  This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.

If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.

Donations to the Unison project are gratefully accepted: 
http://www.cis.upenn.edu/~bcpierce/unison

Reconciling changestinue.[<spc>] / file1

directory1     directory2         
dir      ---->            dir1  [f] f
file     ---->            file1  [f] f
file     ---->            file2  [f] f

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.48.4 started propagating changes at 15:43:29.75 on 02 Oct 2020
[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying dir1
[BGN] Copying file1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file1
[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 15:43:29.81 on 02 Oct 2020


Saving synchronizer state
Synchronization complete at 15:43:29  (3 items transferred, 0 skipped, 0 failed)

Jetzt alle Inhalte von directory1 wird nach directory2 repliziert . Sie können es mit ls überprüfen Befehl:

Sehen? Der Inhalt beider Replikate ist identisch. Wie ich bereits erwähnt habe, werden auch Dateiberechtigungen und Inode-Nummern von Dateien und Ordnern an beiden Standorten synchronisiert. Sie können sehen, dass die Berechtigungen und Inodes auch in der obigen Ausgabe identisch sind.

Haben Sie beim Synchronisieren der Verzeichnisse die Pfeilmarkierungen in der Ausgabe bemerkt? Beispielsweise sollten Sie die folgenden Zeilen in der Mitte der Ausgabe bemerkt haben:

directory1     directory2         
dir      ---->            dir1  [f] f
file     ---->            file1  [f] f
file     ---->            file2  [f] f

Die Pfeilmarkierungen zeigen die Richtung an dass die Änderung weitergegeben werden muss. In unserem Fall zeigen die Pfeile von links nach rechts. Bedeutung - das dir1 , file1 und file2 werden an das zweite Replikat weitergegeben, d. h. directory2 .

Erstellen Sie nun eine neue Datei in directory2 replizieren und sehen, was passiert.

$ touch directory2/file4

Synchronisieren Sie die beiden Replikate mit dem Befehl:

$ unison directory1/ directory2/

Jetzt sehen Sie, dass ein Pfeil von rechts nach links zeigt. Das bedeutet, dass die Änderungen im zweiten Replikat an das erste Replikat weitergegeben werden. Mit anderen Worten, der Inhalt von directory2 werden in directory1 repliziert .

Contacting server...
Looking for changes
Reconciling changes

directory1     directory2         
         <---- new file   file4  [f] f

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.48.4 started propagating changes at 16:04:08.78 on 02 Oct 2020
[BGN] Copying file4 from /home/sk/directory2 to /home/sk/directory1
[END] Copying file4
UNISON 2.48.4 finished propagating changes at 16:04:08.78 on 02 Oct 2020


Saving synchronizer state
Synchronization complete at 16:04:08  (1 item transferred, 0 skipped, 0 failed)

Unison erkennt automatisch, welche Dateien in beiden Replikaten aktualisiert werden müssen. Wenn Sie Unison zum ersten Mal ausführen, werden der Änderungszeitstempel, die Berechtigungen, der Besitz und die Inode-Nummer aller Dateien und Ordner an beiden Speicherorten notiert. Basierend auf diesen Informationen entscheidet Unison, welche Dateien aktualisiert werden müssen, wenn Sie denselben Befehl erneut ausführen. Wie bereits erwähnt, werden alle Informationen unter ~/.unison gespeichert Verzeichnis.

Um es selbst zu überprüfen, ändern Sie den Inhalt einer vorhandenen Datei. Ich werde den Inhalt von file4 ändern in directory1 Replik.

$ echo "Welcome to OSTechNix" > directory1/file4

Starten Sie nun die Synchronisation erneut:

$ unison directory1/ directory2/

Diesmal synchronisiert Unison die geänderte(n) Datei(en).

Contacting server...
Looking for changes
Reconciling changes

directory1     directory2         
changed  ---->            file4  [f] f

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.48.4 started propagating changes at 16:05:27.13 on 02 Oct 2020
[BGN] Updating file file4 from /home/sk/directory1 to /home/sk/directory2
[END] Updating file file4
UNISON 2.48.4 finished propagating changes at 16:05:27.14 on 02 Oct 2020


Saving synchronizer state
Synchronization complete at 16:05:27  (1 item transferred, 0 skipped, 0 failed)

Wie Sie in der obigen Ausgabe sehen können, hat Unison diese Datei file4 erkannt wurde im ersten Replikat geändert und mit dem zweiten Replikat synchronisiert.

Wenn beide Replikate geändert werden und ihre Inhalte unterschiedlich sind, stehen die Änderungen in Konflikt. In solchen Fällen fragt Unison den Benutzer, wie die Aktualisierungen auf beiden Seiten weitergegeben werden sollen. Die Konflikte werden wie unten mit Links- und Rechtspfeilen angezeigt.

directory1     directory2         
new file <-?-> new file   file6  [] 

Wenn eine Standardaktion durch einen Pfeil angezeigt wird, drücken Sie einfach ENTER Taste, um zur nächsten geänderten Datei zu gehen. Wenn Sie etwas anderes mit dieser Datei machen möchten, können Sie entweder "<" drücken oder ">" um zu erzwingen, dass die Änderung von rechts nach links oder von links nach rechts weitergegeben wird.

directory1     directory2         
new file <==== new file   file6  [] <

Wenn Sie keine Änderungen vornehmen möchten, drücken Sie einfach "/" um diese Datei zu überspringen und beide Kopien in Ruhe zu lassen.

1.1. Unisono-Profile

Unison verwendet Profile um Dateien und Ordner zwischen zwei Verzeichnissen auf demselben oder zwei verschiedenen Computern zu synchronisieren. Ein Profil ist nichts anderes als eine Textdatei, in der wir den tatsächlichen Pfad der Stammverzeichnisse und die zu synchronisierenden Pfadeinstellungen definieren. Alle Profile werden in .unison gespeichert Verzeichnis in Ihrem $HOME Verzeichnis.

Wenn Sie Unison zum ersten Mal ausführen, wird ein Standardprofil namens default.prf wird unter ~/.unison erstellt Verzeichnis. Für das Standardprofil sind keine Einstellungen definiert. Also wird alles, was in einem Replikat gespeichert ist, mit einem anderen Replikat synchronisiert.

Wir können auch benutzerdefinierte Profile mit der Liste der Pfadeinstellungen erstellen. Dadurch vermeiden Sie die Synchronisierung der beiden gesamten Replikate.

Mit den benutzerdefinierten Profilen können wir Unison anweisen:

  • um bestimmte Dateien und Ordner zu synchronisieren,
  • um eine bestimmte Datei oder einen bestimmten Dateityp von der Synchronisierung zu ignorieren.

Sehen wir uns ein Beispiel an.

Erstellen Sie zwei Repliken und speichern Sie einige Dateien und Ordner in einer Replik und lassen Sie die andere leer.

$ mkdir ~/directory1
$ mkdir ~/directory2

Erstellen Sie dann ein neues Profil mit dem Namen dir_profile.prf :

$ nano .unison/dir_profile.prf

Definieren Sie die Stammverzeichnisse und die Pfade der Dateien und Verzeichnisse, die Sie synchronisieren möchten:

# Roots of the synchronization
root = /home/sk/directory1
root = /home/sk/directory2 

# Paths to synchronize 
path = dir1
path = file2

Die beiden Wurzeln können in beliebiger Reihenfolge angegeben werden. Unison sortiert sie in einer kanonischen Reihenfolge, bevor sie irgendetwas anderes tut. Wenn Sie keine Pfade angeben, synchronisiert Unison einfach die beiden vollständigen Replikate, beginnend mit dem angegebenen Stammpaar. Wenn eine oder mehrere Pfadeinstellungen angegeben sind, synchronisiert Unison nur diese Pfade und ihre untergeordneten Pfade.

Im obigen Beispiel habe ich den dir1 definiert und file2 sollte mit einem anderen Stammverzeichnis synchronisiert werden. Speichern und schließen Sie die Datei.

Starten Sie nach dem Erstellen des Profils den Synchronisierungsprozess mit dem Befehl:

$ unison dir_profile.prf

Sie werden gefragt, ob Sie mit der Synchronisierung des Inhalts von directory1 fortfahren möchten mit directory2 . Drücken Sie einfach ENTER Taste und drücken Sie dann f Taste, um die zu synchronisierenden Pfade zu bestätigen. Drücken Sie abschließend y und drücken Sie ENTER Taste, um mit der Verbreitung von Updates fortzufahren.

Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
	/home/sk/directory1
	/home/sk/directory2
This can happen either
because this is the first time you have synchronized these roots, 
or because you have upgraded Unison to a new version with a different
archive format.  

Update detection may take a while on this run if the replicas are 
large.

Unison will assume that the 'last synchronized state' of both replicas
was completely empty.  This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.

If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.

Donations to the Unison project are gratefully accepted: 
http://www.cis.upenn.edu/~bcpierce/unison

Reconciling changestinue.[<spc>] | dir1

directory1     directory2         
dir      ---->            dir1  [f] 
file     ---->            file2  [f] 

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.48.4 started propagating changes at 15:42:32.99 on 01 Oct 2020
[BGN] Copying dir1 from /home/sk/directory1 to /home/sk/directory2
[END] Copying dir1
[BGN] Copying file2 from /home/sk/directory1 to /home/sk/directory2
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 15:42:33.04 on 01 Oct 2020


Saving synchronizer state
Synchronization complete at 15:42:33  (2 items transferred, 0 skipped, 0 failed)

Gehen Sie nun zum zweiten Replikat directory2 und prüfen Sie, ob die Inhalte synchronisiert sind.

1.1. Dateien von der Synchronisierung ignorieren

Manchmal möchten Sie vielleicht eine bestimmte Datei oder einen bestimmten Dateityp nicht synchronisieren. Wenn ja, können Sie wie unten im Profil festlegen, welche Dateien ignoriert werden sollen.

ignore=Name text.*
ignore=Name .*~
ignore=Name *.pdf

Weitere Beispielprofile finden Sie hier.

1.2. Synchronisieren Sie lokale Dateien und Verzeichnisse mit unison-gtk

Einige von Ihnen fühlen sich mit der Befehlszeile vielleicht nicht wohl. Glücklicherweise verfügt Unison über eine einfache grafische Oberfläche, die es den Benutzern ermöglicht, Profile einfach zu erstellen und Dateien basierend auf den Profilen über ein grafisches Fenster zu synchronisieren.

Stellen Sie sicher, dass Sie unison-gtk installiert haben wie oben im Installationsabschnitt gezeigt. Starten Sie unison-gtk über das Menü oder den Anwendungsstarter.

Beim ersten Start sehen Sie das Profilauswahlfenster. Wenn Sie bereits ein Profil wie beschrieben erstellt haben, sehen Sie es dort.

Im Profilfenster können Sie ein neues Profil mit neuen Stammverzeichnissen und den zu synchronisierenden Pfaden erstellen. Oder Sie können einfach das vorhandene Profil bearbeiten und die Stammverzeichnisse ändern oder neue Dateien hinzufügen oder die zu synchronisierenden Pfade ändern.

Wenn Sie ein Profil nicht mehr benötigen, wählen Sie es einfach aus und klicken Sie auf „Löschen“.

Ich werde ein neues Profil erstellen. Klicken Sie dazu auf Hinzufügen Schaltfläche aus dem Profilauswahlfenster und klicken Sie auf Weiter .

Geben Sie Ihrem neuen Profil einen passenden Namen mit einer kleinen Beschreibung:

Wählen Sie als Nächstes die Art der Synchronisierung aus, die Sie durchführen möchten. Da es sich um eine Synchronisation zwischen zwei lokalen Verzeichnissen handelt, habe ich "lokal" gewählt .

Wählen Sie die beiden Stammverzeichnisse aus, die Sie synchronisieren möchten.

Aktivieren Sie das folgende Kontrollkästchen, wenn sich eines Ihrer Stammverzeichnisse auf einer FAT-Partition befindet. Dies ist typischerweise bei einem USB-Stick der Fall.

Klicken Sie abschließend auf Übernehmen, um das Profil zu erstellen.

Das neu erstellte Profil erscheint nun im Profilauswahlfenster. Wählen Sie es aus und klicken Sie auf Öffnen.

Die Unison-Grafik zeigt Ihnen nun die Änderungen, die auf beiden Seiten vorgenommen werden müssen. Genau wie in der Unison-Befehlszeilenschnittstelle wird die Standardaktion auch in der grafischen Benutzeroberfläche durch einen Pfeil angezeigt. Wie Sie im folgenden Screenshot sehen, werden die Dateien von links nach rechts weitergegeben, d. h. vom ersten Replikat zum zweiten Replikat. Wenn die Inhalte von Replikaten nicht identisch sind, fragt Unison Sie nach Anweisungen, welches Replikat das andere überschreiben soll.

Wenn Sie mit den Anweisungen für die Weitergabe von Änderungen zufrieden sind, klicken Sie auf Los in der Symbolleiste oder wählen Sie Synchronisation -> Los aus der Menüleiste.

Sobald die Synchronisierung erfolgreich abgeschlossen ist, sehen Sie die Häkchen unter dem Abschnitt Status.

2. Synchronisieren Sie Dateien und Verzeichnisse, die auf verschiedenen Festplatten auf demselben Computer gespeichert sind

Sync-Dateien zwischen zwei Festplatten sind genau die gleichen wie oben. Stellen Sie einfach sicher, dass Sie den richtigen Pfad des Stammverzeichnisses auf dem externen Laufwerk angegeben haben.

Sie wissen jetzt, wie Sie Dateien zwischen zwei Verzeichnissen auf derselben Festplatte und einer anderen Festplatte auf einem lokalen System synchronisieren. Im folgenden Abschnitt wird erläutert, wie Sie Dateien zwischen zwei verschiedenen Systemen synchronisieren.

3. Dateien und Verzeichnisse zwischen lokalen und entfernten Rechnern synchronisieren

Wie bereits erwähnt, kann Unison Dateien zwischen lokalen und Remote-Systemen über eine direkte Socket-Verbindung und über eine verschlüsselte SSH-Verbindung synchronisieren. Wie Sie bereits wissen, ist SSH viel besser und sicherer als die Socket-Methode. Für die Zwecke dieses Leitfadens werde ich die SSH-Methode verwenden, um Dateien zu synchronisieren.

Stellen Sie sicher, dass Sie openSSH und Unison auf beiden Systemen installiert haben . Stellen Sie außerdem sicher, dass beide Systeme über SSH kommunizieren können. Bitte beachten Sie, dass Ihre lokalen und Remote-Systeme dieselbe Version von Unison haben sollten .

Um die Version von Unison zu überprüfen, führen Sie den folgenden Befehl auf Ihrem lokalen und Remote-System aus:

$ unison -version
unison version 2.48.4

Da die Dateien über SSH synchronisiert werden, spielt es keine Rolle, ob das Remote-System über unison-gtk verfügt oder nicht. Die Unison-Befehlszeilenschnittstelle reicht auf einem Remote-Computer gerade aus! Auf Ihrem lokalen Rechner können Sie entweder eine Text- oder eine grafische Unisono-Oberfläche verwenden.

3.1. Synchronisieren Sie Dateien und Verzeichnisse zwischen lokalen und entfernten Computern über die Befehlszeile

Lassen Sie uns nun das directory1 synchronisieren von unserem lokalen System in das directory1 im Remote-System mit unisono, indem Sie den folgenden Befehl ausführen:

$ unison directory1/ ssh://[email protected]/directory1/

Hier, [email protected] ist der Benutzername und die IP-Adresse meines Remote-Systems.

Sie werden aufgefordert, das Passwort Ihres Remote-Benutzers einzugeben. Drücken Sie als Nächstes die EINGABETASTE, um der Synchronisierung des Inhalts von directory1 zuzustimmen des lokalen Rechners mit directory 1 der Remote-Maschine. Drücken Sie dann f Taste, um die zu synchronisierenden Pfade zu bestätigen. Drücken Sie abschließend y und drücken Sie ENTER Taste, um mit der Verbreitung von Updates fortzufahren.

Contacting server...
[email protected]'s password: 
Connected [//ostechnix//home/sk/directory1 -> //ubuntuserver//home/ostechnix/directory1]
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
	/home/sk/directory1
	//ubuntuserver//home/ostechnix/directory1
This can happen either
because this is the first time you have synchronized these roots, 
or because you have upgraded Unison to a new version with a different
archive format.  

Update detection may take a while on this run if the replicas are 
large.

Unison will assume that the 'last synchronized state' of both replicas
was completely empty.  This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.

If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.

Donations to the Unison project are gratefully accepted: 
http://www.cis.upenn.edu/~bcpierce/unison

Press return to continue.[<spc>]   Waiting for changes from server
Reconciling changes

local          ubuntuserver       
file     ---->            file1  [f] f
file     ---->            file2  [f] f

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.48.4 started propagating changes at 14:49:18.44 on 03 Oct 2020
[BGN] Copying file1 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1
[BGN] Copying file2 from /home/sk/directory1 to //ubuntuserver//home/ostechnix/directory1
[END] Copying file1
[END] Copying file2
UNISON 2.48.4 finished propagating changes at 14:49:18.45 on 03 Oct 2020


Saving synchronizer state
Synchronization complete at 14:49:18  (2 items transferred, 0 skipped, 0 failed)

Der obige Befehl repliziert den Inhalt von directory1 vom lokalen System in das directory1 auf dem entfernten System. Fügen Sie nun eine neue Datei hinzu oder aktualisieren Sie eine vorhandene Datei und versuchen Sie die Synchronisierung erneut. Sie sollten auf beiden Seiten ähnliche Ergebnisse sehen.

Wenn Sie den Inhalt an einen anderen Ort als das Home-Verzeichnis auf dem Remote-System synchronisieren möchten, müssen Sie den absoluten Pfad des Remote-Verzeichnisses angeben, indem Sie einen zusätzlichen Schrägstrich zwischen dem Remote-Hostnamen und dem Anfang des Pfads hinzufügen wie unten:

$ unison directory1/ ssh://[email protected]//sync/the/files/here/

Wenn Sie nicht das gesamte Verzeichnis synchronisieren möchten, erstellen Sie einfach ein benutzerdefiniertes Profil und definieren Sie die zu synchronisierenden Pfade, wie in Abschnitt 1.1 beschrieben. Unisono-Profile oben.

3.2. Synchronisieren Sie Dateien und Verzeichnisse zwischen lokalen und entfernten Computern mit unison-gtk

Starten Sie die Unison-gtk-Anwendung über das Menü oder den Launcher. Klicken Sie auf Hinzufügen Schaltfläche im Profilauswahlfenster, um ein neues Profil zu erstellen.

Klicken Sie auf Weiter.

Geben Sie den Unison-Profilnamen und seine Beschreibung ein und klicken Sie auf Weiter.

Hier ist der wichtige Schritt. Wählen Sie "ssh" aus dem Dropdown-Feld Art der Synchronisierung. Geben Sie die IP-Adresse oder den Hostnamen des Remote-Systems und den Remote-Benutzernamen ein. Aktivieren Sie auch das Kontrollkästchen "Komprimierung aktivieren", um die Datenübertragungsleistung zu verbessern.

Wählen Sie lokale und entfernte Verzeichnisse aus, die Sie synchronisieren möchten.

Wenn sich eines Ihrer Verzeichnisse auf einer FAT-Partition befindet, müssen Sie diese Option aktivieren. Dies ist normalerweise bei USB-Laufwerken der Fall.

Klicken Sie auf Übernehmen, um die Profilerstellung abzuschließen.

Das neu erstellte Profil erscheint nun im Profilauswahlfenster. Wählen Sie das Profil aus und klicken Sie auf Öffnen.

Sie werden aufgefordert, das Passwort Ihres Remote-Benutzers einzugeben. Geben Sie das Passwort ein und klicken Sie auf OK.

Nach Eingabe des Passworts listet Unison die Änderungen auf, die von lokal an remote weitergegeben werden sollen. Die Standardaktion ist mit einem Pfeil gekennzeichnet. Wenn Sie die Standardaktion nicht möchten, drücken Sie "von links nach rechts" oder "von rechts nach links" Optionen in der Menüleiste, um festzulegen, welches Replikat das andere überschreiben soll. Klicken Sie abschließend auf Los zu replizieren.

Unison repliziert nun den gesamten Inhalt des lokalen Verzeichnisses mit dem Remote-Verzeichnis. Nachdem die Synchronisierung abgeschlossen ist, sehen Sie das Häkchen im Abschnitt Status.

Sie können den Inhalt von Dateien und Verzeichnissen an beiden Orten überprüfen.

Die obige Methode synchronisiert den gesamten Inhalt des lokalen Replikats mit dem Remote-Replikat. Wenn Sie bestimmte Dateien oder Verzeichnisse synchronisieren möchten, erstellen Sie ein benutzerdefiniertes Profil und definieren Sie die zu synchronisierenden Pfade wie in Abschnitt 1.1 beschrieben. Unisono-Profile oben.

3.3. SSH-schlüsselbasierte Authentifizierung einrichten (optional)

Wann immer Sie Dateien zwischen zwei verschiedenen Systemen über SSH synchronisieren, müssen Sie das Passwort des Remote-Benutzers eingeben. Wenn Sie das Passwort nicht jedes Mal eingeben möchten, können Sie eine passwortlose SSH-Authentifizierung einrichten, wie im folgenden Link beschrieben. Generieren Sie kein SSH-Schlüsselpaar mit Passphrase. Andernfalls müssen Sie beim Synchronisieren von Dateien zwischen Systemen immer noch das Kennwort eingeben.

  • So konfigurieren Sie die schlüsselbasierte SSH-Authentifizierung unter Linux

3.4. Cronjob einrichten (optional)

Wir können Dateien mithilfe von Cron-Jobs automatisch in bestimmten Zeitintervallen synchronisieren.

Fügen Sie beispielsweise den folgenden Eintrag in Ihre crontab ein Datei, um die Synchronisierung jeden Tag auszuführen (Es läuft um 00:00 Uhr):

0 0 * * * unison directory1/ ssh://[email protected]//home/ostechnix/directory1/

Weitere Einzelheiten zum Festlegen von Cron-Jobs finden Sie in der folgenden Anleitung:

  • Ein Anfängerleitfaden für Cron-Jobs

Hilfe bekommen

Ich habe nur die Grundlagen behandelt. Dies reicht gerade aus, um eine funktionierende Synchronisation auf Ihrem Linux-System einzurichten. Wenn Sie mehr über die Verwendung erfahren möchten, lesen Sie bitte den Unison-Hilfeabschnitt.

Um die lokale Dokumentationsseite anzuzeigen, führen Sie Folgendes aus:

$ unison -doc topics

Sie sehen die Liste der verfügbaren Themen in der lokalen Dokumentation.

Documentation topics:
          about About Unison
         people People
          lists Mailing Lists and Bug Reporting
         status Development Status
        copying Copying
            ack Acknowledgements
        install Installation
       tutorial Tutorial
         basics Basic Concepts
       failures Invariants
        running Running Unison
            ssh Installing Ssh
           news Changes in Version 2.48.4

Type "unison -doc <topic>" for detailed information about <topic>
or "unison -doc all" for the whole manual

Um die detaillierten Informationen zu einem Thema anzuzeigen, z. B. unisono tutorial , ausführen:

$ unison -doc tutorial

Sie können auch das gesamte Unison-Handbuch mit dem folgenden Befehl anzeigen:

$ unison -doc all

Ich habe auch die offiziellen Links von Unison am Ende dieses Handbuchs angehängt. Gehen Sie die Dokumentation durch und machen Sie sich mit der Funktionsweise von Unison vertraut. Sobald Sie genug gelernt haben, versuchen Sie, die lokale und/oder Remote-Synchronisierung mit Unison in der Produktion einzurichten.

Schlussfolgerung

Mit Unison können Sie zwei oder mehr Systeme einfach und effizient vollständig miteinander synchronisieren, unabhängig davon, was auf einem der Systeme geändert wird. Wenn Sie zwei Instanzen einer Sammlung von Dateien und Verzeichnissen auf zwei Systemen aktuell und identisch halten möchten, ist Unison eine gute Wahl!


Linux
  1. So installieren Sie Python unter Linux

  2. So installieren Sie Java unter Linux

  3. So entpacken Sie Dateien unter Linux (mit Beispielen)

  4. So finden Sie Dateien mit dem fd-Befehl in Linux

  5. Wie kann ich Dateien mit xargs unter Linux verschieben?

So richten Sie eine Firewall mit UFW unter Linux ein

So installieren Sie Rclone unter Linux und Unix

So entfernen Sie Dateien mit einer bestimmten Erweiterung in Linux

So finden Sie Dateien mit dem fd-Befehl in Linux

So laden Sie Dateien mit dem Curl-Befehl unter Linux herunter

So laden Sie Dateien mit dem Wget-Befehl unter Linux herunter