Kann Unison dazu verwendet werden, Bindemounts oder Hardlinks zu ignorieren?

506
Jesse the Wind Wanderer

Ich suche nach der besten Möglichkeit, mein Home-Verzeichnis auf und von einem 120-GB-USB-Laufwerk zu synchronisieren. Der Haken ist, dass ich Bind Mounts (was ich nicht will befolgt werden) und Hard - Links (was ich tun wollen werden beibehalten ). Rsync kann dies, aber es ist eine Richtung, während ich auf beiden Seiten Änderungen habe.

Es sieht so aus, als ob Unison die bidirektionale Synchronisation intelligent handhaben kann, aber ich kann keine Option finden, um sie auf ein Dateisystem zu beschränken oder Bindemounts zu ignorieren. In der Dokumentation heißt es: " Unison versteht keine harten Links ". Standardmäßig verwendet unison jedoch rsync für die Übertragung. Gibt es eine Möglichkeit, das Verständnis von rsync für harte Links und Bindungshalterungen zu nutzen?

Oder kann mir jemand auf ein Beispiel verweisen, bei dem die bidirektionale Synchronisierung manuell mit rsync und diff durchgeführt wird? Oder etwas ähnliches?

Hinweis: Ich habe FreeFileSync in der Vergangenheit verwendet, aber es ist ein Fehler aufgetreten, und ich habe fast meine Dateien und das Backup verloren! Es war möglicherweise meine Schuld, aber ich habe jetzt Angst, FreeFileSync zu verwenden.

1
Mein "manuell" meine ich zum Beispiel, ein benutzerdefiniertes Skript zu schreiben, das mit Hilfe von diff oder ähnlich die Änderungen findet und dann rsync, um die Änderungen vorzunehmen. Jesse the Wind Wanderer vor 5 Jahren 0

1 Antwort auf die Frage

2
Mike Pierce

Ich vermute, dass, wenn Sie nur Unison verwenden, die Antwort auf Ihre Frage nein ist . Im Allgemeinen ist es schwierig, Unison mitzuteilen, Dateien oder Verzeichnisse mit einer Eigenschaft zu synchronisieren oder nicht zu synchronisieren, deren Name nicht mit einer Art Musterübereinstimmung angegeben werden kann, wie z. B. Verzeichnisse, die in Ihrem Fall Bind-Mounts oder feste Links sind.

Es ist nicht ganz richtig zu sagen " Standardmäßig verwendet unison Rsync für die Übertragung ." Unison verwendet denselben Algorithmus / Protokoll wie rsync, verwendet jedoch seine eigene Implementierung. Die eigentliche rsyncausführbare Datei wird nicht aufgerufen. Daher können Sie die Funktionen der rsyncausführbaren Datei nicht ansprechen und können Ihr Problem auf diese Weise nicht lösen. Wenn rsyncja, dann kann ich mir vorstellen, dass Unison es tun könnte, wenn jemand das Feature schreiben würde.

Da Unison, wie Sie darauf hingewiesen haben, keine harten Links versteht, denke ich, dass Sie dort einfach kein Glück haben. Möglicherweise können Sie jedoch ein externes Programm verwenden, um Bind-Mounts geschickt zu ignorieren. Sie können findmnt verwenden, um die Verzeichnisse aufzulisten, die Bindungsaktivierungen sind, und dann die Zeile für jedes Bindungsaktivierungselement ignore = Path /path/to/bind/mountin Ihr Unison-Profil einzufügen .

Da es so aussieht, als würden Sie in Betracht ziehen, dies manuell mit einem Skript oder etwas anderem zu tun, sollten Sie sich der inotify-tools bewusst sein .

Danke Mike, offensichtlich ist das nicht die Antwort, auf die ich gehofft hatte, aber es ist sehr gut erklärt. Da ich also ein Skript schreiben muss, müssen Sie einige Beispielskripte kennen, die ich anpassen könnte. Sicherlich bin ich nicht die einzige Person, die zwei Verzeichnisbäume mit beiden Hardlinks synchronisieren und Mounts darin binden wollte. Jesse the Wind Wanderer vor 5 Jahren 0
@JessetheWindWanderer Du bist sicher nicht. :) Aber ich kenne leider keine solchen Skripte. Mike Pierce vor 5 Jahren 0