Mit großem Dateibaum meine ich ungefähr 200.000 Dateien, die ständig wachsen. Eine relativ kleine Anzahl von Dateien wird jedoch in einer bestimmten Stunde geändert.
Mit bidirektional meine ich, dass Änderungen auf beiden Servern auftreten können und auf den anderen übertragen werden müssen, sodass rsync nicht geeignet erscheint.
Mit Ferne meine ich, dass sich die Server beide in Rechenzentren befinden, aber geografisch voneinander entfernt sind. Derzeit gibt es nur 2 Server, die sich jedoch im Laufe der Zeit erweitern können.
In Echtzeit ist es in Ordnung, dass zwischen den Synchronisierungen eine kurze Wartezeit liegt, aber das Ausführen eines Cron alle 1-2 Minuten scheint nicht richtig zu sein, da sich ein sehr kleiner Teil der Dateien in einer bestimmten Stunde ändern kann, geschweige denn in einer Minute.
BEARBEITEN : Dies läuft auf VPS, so dass ich möglicherweise auf die Arten von Kernel-Level-Sachen beschränkt bin, die ich tun kann. Außerdem sind die VPS nicht ressourcenreich, weshalb ich Lösungen, die viel RAM erfordern (wie Gluster?), Scheuen würde.
Was ist der beste / am meisten akzeptierte Ansatz, um dies zu erreichen? Dies scheint ein allgemeines Bedürfnis zu sein, aber ich konnte noch keinen allgemein akzeptierten Ansatz finden, was überraschend war. (Ich suche die Sicherheit der Massen. :)
Ich bin auf lsyncd gestoßen , um eine Synchronisierung auf der Dateisystem-Änderungsstufe auszulösen. Das scheint klug, wenn auch nicht sehr häufig, und ich bin ein bisschen verwirrt von den verschiedenen lsyncd-Ansätzen. Es gibt nur die Verwendung von lsyncd mit rsync, aber es scheint, dass dies für die Bidirektionalität fragil ist, da rsync keine Vorstellung von Arbeitsspeicher hat (z. B. zu wissen, ob eine gelöschte Datei auf A auf B gelöscht werden soll oder ob es sich um eine neue Datei auf B handelt das sollte nach A) kopiert werden. lipsync scheint nur eine lsyncd + rsync-Implementierung zu sein, oder?
Dann gibt es lsyncd mit csync2 , wie folgt : https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Ich neige zu diesem Ansatz, aber csync2 ist ein bisschen schrullig, obwohl ich es erfolgreich getestet habe. Ich bin größtenteils besorgt, dass ich nicht viele Community-Bestätigungen für diese Methode finden konnte.
Die Leute hier scheinen Unison sehr zu mögen, aber es scheint, dass es sich nicht mehr in der aktiven Entwicklung befindet und es nicht klar ist, dass es einen automatischen Trigger wie lsyncd hat.
Ich habe gesehen, wie Gluster erwähnt wurde, aber vielleicht zu viel für das, was ich brauche?
UPDATE: Letztendlich habe ich die ursprüngliche Lösung gewählt, die ich erwähnt habe: lsyncd + csync2. Es scheint ganz gut zu funktionieren, und ich mag den architektonischen Ansatz, dass die Server sehr locker verbunden sind, sodass jeder Server unabhängig von der Verbindungsqualität für sich unbegrenzt arbeiten kann.