Was ist der einfachste Weg, um ein Unison-Profil auf Maschinen zu synchronisieren, die nicht direkt kommunizieren können?

482
hugomg

Ich verwende Unison, um einige Dateien zwischen meinem Heimcomputer und meinem Arbeitscomputer zu synchronisieren. Die beiden Computer können jedoch keine direkte Verbindung über SSH herstellen. Daher synchronisiere ich über einen USB-Stick (mit ext4 formatiert, um die Berechtigungen beizubehalten).

Mein Problem ist, dass Unison die Synchronisationsprofilkonfiguration lokal (im .unison-Verzeichnis) statt im Ordner selbst speichert. Dies bedeutet, dass einige Informationen, z. B. ignorierte Dateien, in den beiden Profilen, die ich aufbewahre, dupliziert werden müssen.

Gibt es eine Möglichkeit, das Synchronisationsprofil automatisch zwischen den beiden Computern synchron zu halten?

2

2 Antworten auf die Frage

1
Edward

Ich lasse das Profil in dem zu synchronisierenden Verzeichnis. Darin habe ~/.unisonich einen Link zum echten Profil gesetzt. Das hat gut für mich funktioniert. Es erlaubt mir auch, schnell einen neuen Computer zu booten: einfach das Profil vom USB-Laufwerk auf einen neuen Computer zu kopieren und neu zu starten.

Es gibt eine "Gotcha". Wenn Sie dem Profil (auf einem Computer) eine Ignorierzeile hinzufügen , die mit einer Datei übereinstimmt, die bereits auf dem USB-Laufwerk vorhanden ist, wird diese Datei trotz der nächsten Unison-Synchronisierung vom USB-Laufwerk auf den anderen Computer übertragen die ignorieren Linie. Der Grund ist, dass das Profil zur Übertragung geplant ist, aber bis zur nächsten Synchronisierung nicht auf dem anderen Computer wirksam ist . Abgesehen davon habe ich noch keine Probleme gehabt.

Funktioniert perfekt :) Ich habe nie gedacht, dass das Einfügen von Symlinks in `.unison` funktionieren würde! hugomg vor 8 Jahren 0
1
hugomg

Die Alternative, mit der ich endete, ist eine Synchronisation in zwei Schritten. Ich habe ein Unison-Profil zum Synchronisieren meiner Unison-Profile

#.unison/sneakernet-init.prof  label = Unison profiles  root = /home/hugo/.unison root = /media/hugo/MYDRIVE/Sync/Unison  path = sneakernet-common # ignore rules, diff command, etc path = sneakernet-dotfiles.prf # profile for my dotfiles path = sneakernet-hugobox.prf # profile for my other stuff 

Dann verwende ich ein Skript, um mit jedem Profil der Reihe nach unisono auszuführen

#syncronize-things.sh unison-gtk sneakernet-init unison-gtk sneakernet-dotfiles unison-gtk sneakernet-hugobox sync # Flush file system caches 

Diese Lösung ist etwas umständlich, da ich unisono dreimal statt einmal laufen muss. Sie hat jedoch den Vorteil, dass keines der unisonischen Profile für die Synchronisierung verantwortlich ist (was zu dem seltsamen Verhalten führt, bei dem Sie unisono zweimal mit dem it ausführen müssen dasselbe Profil, um die Dinge zum Laufen zu bringen)