Wie mache ich Unison wie rsync?

657
fuumind

Ich habe zwei Wurzeln /syncund ssh://bob@remotehost//sync. Diese Wurzeln enthalten drei Unterordner: paul, bobund sam. Ich synchronisiere sie derzeit mit folgendem Skript:

rsync -a --delete --delete-excluded --delete-after --force\ /sync/paul/ bob@remotehost:/sync/paul rsync -a --delete --delete-excluded --delete-after --force\ bob@remotehost:/sync/bob/ /sync/bob unison /sync/sam ssh://bob@remotehost//sync/sam 

Ich möchte ein Unison-Profil erstellen, das alle drei Unterordner verwaltet. Bisher habe ich folgendes:

# Define roots and paths root = /sync root = ssh://bob@remotehost//sync path = paul path = bob path = sam  # Preserve timestamps times = true  # Force single direction for some paths forcepartial = Path paul/* -> /sync forcepartial = Path bob/* -> ssh://bob@host//sync 

Mit diesem Profil habe ich erwartet, dass alle Änderungen in /sync/paulpropagiert ssh://bob@remotehost//sync/paulund alle Änderungen /sync/paulzwangsweise gelöscht werden. Ich habe auch umgekehrt für den Weg erwartet bob. Das sehe ich jedoch nicht. In meinen Testläufen möchte Unison neue Dateien und Ordner in beide Richtungen für beide Pfade paulund weitergeben bob.

Wie kann ich Unison dazu bringen, sich wie rsync -a --delete --delete-excluded --delete-after --force $SOURCE/ $DESTfür die Pfade bobund zu benehmen paul?

1

1 Antwort auf die Frage

2
fuumind

Wie sich herausstellt, forcepartial = Path paul/* -> ...passen die mit einem Punkt beginnenden Datei- und Ordnernamen nicht zusammen (z paul/.config. B. ). Allerdings kann man verwenden BelowPath pauloder Regex paul/.*statt. Die folgende Verwendung von BelowPathwürde mein Ziel erreichen:

... forcepartial = BelowPath paul -> /sync forcepartial = BelowPath bob -> ssh://bob@host//sync 

Dasselbe aber mit Regex:

... forcepartial = Regex paul/.* -> /sync forcepartial = Regex bob/.* -> ssh://bob@host//sync 

Diese Seite legt nahe, dass das Regex-Schlüsselwort auch für den Abgleich von Unterordnern verwendet werden kann. Dies bedeutet, dass forcepartial = Regex somefolder/.* -> ...der Ordner paul/somefolderund alle untergeordneten Ordner übereinstimmen . Ich habe nicht damit experimentiert und kann es nicht sagen.

Ich kann empfehlen, Unison nicht für die Synchronisierung von Home-Ordnern für Desktop-Benutzer zu verwenden, zumindest nicht auf einer langsamen HD. Der konstante Fluss von Statusdateien für Apps wie Chromium, Firefox usw. sorgt dafür, dass die Unison-Indexphase bei jeder Synchronisierungssitzung eine Ewigkeit dauert. fuumind vor 8 Jahren 0