Netzwerk ist toll. Alle Daten überall verfügbar. Theoretisch.
Um ein solches Konstrukt zu realisieren hatte ich bisher ein NFS-Share auf meinem Server aktiv und an den Clients selbiges gemountet – üblicherweise eine solide Basis, allerdings gibt es einen gewaltigen Nachteil: Es wird eine ständige Verbindung zum Server benötigt und Daten werden bei jedem Vorgang (sofern nicht im Cache) neu über das Netzwerk gelesen. Ergebnis sind hohe Netzlasten und kein Offlinebetrieb.
Zwichenzeitlich hatte ich immer wieder nach anderen Lösungen gesucht welche auf meinem Laptop einen Offlinebetrieb sicherstellen und auch große Dateien meines Hauptrechners schnell verarbeiten kann. Vorzugsweise sollten die Daten also lokal liegen und auf einen Server repliziert werden, hierdurch habe ich einen Offlinebetrieb und kann auf Systemen mit SSD einen Leistungssprung erhalten.
Dropbox
Die Lösung, welche vermutlich die meisten Leute kennen ist Dropbox. Zwar ist das System weit verbreitet und ausgereift, allerdings nicht Open Source, es werden Server verwendet welche man nicht selbst kontrollieren kann und der Speicher ist relativ teuer. Keine Lösung für mich.
SparkleShare
SparkleShare arbeitet ähnlich wie Dropbox, jedoch benötigt man einen eigenen Server. Standardmäßig wird für Synchronisationsnachrichten ein externer Server verwendet, hierbei sollen jedoch keine indentifizierbaren Daten gesendet werden – wem dies nicht gefällt kann über einen zusätzlichen Serverdienst diese Aufgabe auch selbst übernehmen. Im Hintergrund arbeitet das System auf Basis der Revisionsverwaltung Git. Leider scheint das System nicht für meine Datenmassen ausgelegt zu sein, daher war auch dieses System für micht nicht sinnvoll nutzbar.
DDRB
Auch DDRB könnte eine lokale SSD ausnuzten, jedoch wäre ein Betrieb ohne dauerhafte Verbindung nicht möglich. Da der für solche Zwecke fast schon unumgängliche Proxy nicht Open Source ist fällt auch diese Lösung in die Tonne.
rsync
Also back to the shell – mit rsync lassen sich Ordner auch über mehrere Systeme schnell und effizient Synchronisieren. Regelmäßig ausgeführt lässst sich so eine von mit gewünschte Lösung erreichen. Zwar könnte es zu Problemen bei der gleichzeitigen Nutzung mehrerer Computer kommen, da sowas jedoch bei einem Nutzer nur selten vorkommt kann ich hiermit leben. Das regelmäßige Ausführen ließ sich beispielsweise über einen Cronjob realisieren.
lsyncd
Um das RSync-Prinzip zu vereinfachen lässt sich die Software LSyncd verwenden – sie überwacht die verwendeten Ordner, sammelt Änderungen und löst bei Bedarf passende rsync-Prozesse aus. Über dieses Konzept erspart man sich das ständige Prüfen auf Änderungen. Lsyncd arbetet nur in eine Richtung – da dies für micht kein Problem ist wird nun beim Login ein rsync Server->Client ausgelöst und danach LSyncd für Client->Server gestartet.
…and beyond
Da rsync/lsyncd sehr zuverlässig arbeitet darf sich neben dem Datenordner die Lösung bei mir noch an ganz anderer Stelle beweisen: Einige Programme benötigen viel IO, jedoch ist die Datenintegrität nicht sonderlich wichtig, hierzu zählen vor allem die Caches von Browser und Mailsoftware. Diese Ordner werden nun beim Login auf ein tmpfs kopiert und verknüpft. Rsync/LSyncd sorgen dafür, dass die Daten regelmäßig wieder auf der Platte landen und so auch bei einem Absturz der Datenverlust nur gering ist. Bei einem regulären Logout wird natürlich ohnehin synchronisiert. Da die fragliche Maschiene genügend RAM besitzt sollte der Platz kein Problem sein – durch die Swapiness müsste Linux ohnehin unbenutzte Bereiche des tmpfs-Volumes wieder auf die Platte befördern.