Dateisynchronisation zwischen 3 Orten?

2779

Ich brauche einen Weg, um Dateien zwischen drei Orten zu synchronisieren, die alle geändert werden können.

Alle Orte sind unter Linux und das Synchronisationstool muss mit cronjob ausgeführt werden - nicht manuell!

Ich habe es versucht unison, aber ich kann nicht mit 3 verschiedenen Stellen arbeiten (ich habe versucht, die Konfiguration mithilfe von <=> b und b <=> c-Synchronisationen durchzuführen, aber es funktioniert nicht).

Gibt es ein Werkzeug, das so etwas tun könnte?

2
Warum funktioniert der unisono Ansatz nicht? Haben Sie in Betracht gezogen, dafür ein Versionskontrollsystem zu verwenden? pjc50 vor 14 Jahren 0
Sie möchten eine Veränderung an einem Ort, um bei den anderen beiden zu landen? innaM vor 14 Jahren 0
@Manni: Ja - es sollte in alle Richtungen funktionieren. vor 14 Jahren 0
Weil Sie bereits * unison * verwenden, denke ich, dass ein einfacher Rsync nicht das ist, was Sie wollen? cringe vor 14 Jahren 0
@Carsten: Ich kenne keine Möglichkeit, Rsync so einzurichten, dass 3-Wege-Synchronisation durchgeführt wird. vor 14 Jahren 0

7 Antworten auf die Frage

4
Saxtus

Haben Sie Dropbox für Linux ausprobiert?

Ich dachte, dass Dropbox ein Benutzer "etwas tun" muss, um zu synchronisieren. Andererseits - ich muss es automatisch machen. Und die Datenmengen (~ 100 GB), die ich synchronisieren muss, sehen wie eine schlechte Übereinstimmung mit der Dropbox aus. vor 14 Jahren 0
Keine Aktion erforderlich, aber für 100 GB ist es wahrscheinlich nicht das richtige Werkzeug user12889 vor 14 Jahren 0
Wenn der Großteil der Dateien unverändert bleibt, besteht kein großes Problem, da Dropbox nur die Unterschiede zwischen den Computern sendet (nicht zu erwähnen, dass es nur eine LAN-Funktion gibt, um sie wirklich schnell zu synchronisieren, wenn sie sich im selben LAN befinden). Aber das eigentliche Problem ist, dass für 100 GB Daten auch 19,99 $ / Monat gezahlt werden müssen ... Saxtus vor 14 Jahren 1
3
Tony

Unison wird das tun. Erstellen Sie im Unison-Ordner, in dem die Synchronisierungsdaten gespeichert sind (osx-Pfad: ~ / Library / Application Support / Unison), zwei PRF-Dateien.

example1.prf

# Unison preferences file  root = /Users/XXXX/Desktop/a   root = /Users/XXXX/Desktop/b  perms = 0  #confirmbigdel = false 

example2.prf

# Unison preferences file  root = /Users/XXXX/Desktop/b   root = /Users/XXXX/Desktop/c  perms = 0  #confirmbigdel = false 

Führen Sie nun "unison example1" und "unison example2" aus, alle Ordner werden synchronisiert.

Sie können dies noch einen Schritt weiter machen und alle Ordner aktualisieren lassen, sobald sich eine Datei ändert, wenn Sie aus dem neuesten SVN unisono erstellen. Mit dem neuesten svn können Sie das Flag "-repeat watch" (z. B. "unison exampleX -repeat watch") verwenden, um Ordner auf Änderungen zu überwachen, vorausgesetzt, die Datei fsmonitor.py befindet sich in demselben bin-Verzeichnis, in dem Sie Unison ausführen .

Dies funktioniert auch über ssh, wenn auf allen Rechnern die gleiche Version installiert ist ... Eine private Dropbox im Grunde. Es wäre wahrscheinlich von Vorteil, wenn ein Server eingerichtet ist, der immer mit dem Internet verbunden ist, um Änderungen jederzeit zu akzeptieren. Alle Computer würden eine Verbindung zu diesem Server herstellen, um nach Änderungen zu suchen.

1
Jimmy Hedman

Eine unorthodoxe Idee, könnten Sie nicht einfach GIT verwenden?

Ich glaube, ich könnte, aber ich weiß es (noch) nicht, und ich fühle mich nicht wohl dabei, wichtige Daten zu verstehen. vor 14 Jahren 0
Da Sie scheinbar über große Datenmengen verfügen, funktioniert GIT ebenfalls nicht. Jimmy Hedman vor 14 Jahren 0
Nun, ich würde mich mit Git (im Vergleich zu anderen Lösungen) noch wohler fühlen, da Sie niemals jemals Daten verlieren können. Außerdem hat Git wirklich keine Probleme mit einer riesigen Datenmenge. Sie haben jedoch das Problem, dass einige redundante Daten erhalten bleiben, dh mindestens die Größe der Daten selbst (Sie können Daten aus der Historie löschen, also auch nicht viel mehr). Albert vor 13 Jahren 0
1
0x44

NFSoder Sambakeine Cron-Jobs erforderlich.

In Szenarien mit nicht so guten Konnektivität funktioniert keine dieser Methoden gut. vor 14 Jahren 0
0
trip0d199

Wie wäre es mit Subversion, einem kostenlosen Service wie projectlocker oder cvsdude? Es ist sehr leicht skalierbar.

subversion behält die 2. Kopie der Daten im .svn-Verzeichnis. was im Fall von 100 GB Basisdaten alles andere als praktisch ist vor 14 Jahren 0
0
Jimmy Hedman

Ändern sich die Daten ständig an allen Orten? Andernfalls können Sie Ihre Arbeit beginnen, indem Sie einen Rsync-Vorgang von einem Computer (den Sie als Master deklarieren) auf dem Computer ausführen, den Sie arbeiten, und anschließend Rsync-Vorgang durchführen, wenn Sie fertig sind.

Ja. Ich habe keine Kontrolle darüber, was sich wo oder wann ändert - dies sind im Wesentlichen drei Büros, in denen sich einige Personen befinden. vor 14 Jahren 0
0
Edward

Ich weiß, ich bin zu spät zur Party, aber es ist möglich, 3 (oder mehr Hosts) mit Unison zu synchronisieren. Ich mache das regelmäßig mit vier Maschinen. Ich habe eine sternförmige Topologie erstellt, in der ein Host als "zentral" bezeichnet wird und die anderen mit diesem "zentralen" Knoten synchronisiert werden, niemals gegeneinander. Am einfachsten ist es, wenn sich am zentralen Knoten keine Änderungen ergeben. In Ihrem Fall würde dies einen vierten Knoten erfordern.