Hi Menschen,
ich suche gerade nach einer praktikablen Lösung mein /home auf weitere Rechner zu syncen.
Ausgangssituation; 3x Debian 10 "buster" die sich regelmäßig mal in einem Netz treffen, aber auch mal getrennt von einander existieren. Ich hätte gern mein /home auf allen 3 Systemen gleichermaßen verfügbar und aktuell.
Lösungen? 1) rsync via ssh 2) Nextcloud Desktop Client 3) /home komplett in einem git 4) Snapshot mit btrfs / zfs und sync der Snapshots via Nextcloud / rsync
Gibt es noch weitere Lösungen die ich nicht kenne? Welche haltet ihr für am sinnvollsten und schnellsten? Muss /home in solchen fällen zwingend eine extra Partition sein?
vlg
nac
Moin nac,
Am 12.01.2020 14:21 schrieb nac:
Ausgangssituation; 3x Debian 10 "buster" die sich regelmäßig mal in einem Netz treffen, aber auch mal getrennt von einander existieren. Ich hätte gern mein /home auf allen 3 Systemen gleichermaßen verfügbar und aktuell.
Bevor du konkrete technische Lösungen suchst, mach dir klar, dass dieses Problem (so wie beschrieben) schon auf der konzeptuellen Ebene so gut wie unlösbar ist.
Der einfache Fall (der tatsächlich lösbar sein kann) ist, wenn zu jedem Zeitpunkt nur maximal eines dieser drei Systeme aktiv ist. Dann gibt es keine Bearbeitungskonflikte. Dann bleibt "nur" die Frage, wie man bei beweglichen Systemen (Notebooks, Tablets etc.) auf die Hauptkopie des /home zugreift.
Sobald mehrere Systeme parallel aktiv sind, stellt sich die Frage, wie die Änderungen an den verschiedenen /home zusammengeführt werden sollen. Bei Textdateien ist ein `git merge` oder ähnlich noch ziemlich machbar, aber was machst du bei Binärdateien? Firefox zum Beispiel legt jede Menge Kram in SQLite-Datenbanken ab. Und selbst wenn du dafür ein passendes Merge-Tool hast, stellt sich die Frage, wie du inhaltliche Merge-Konflikte auflöst.
Ich habe vor Jahren auch schon mal überlegt, ob ich mein /home zwischen dem Desktop-PC zuhause und meinem Notebook syncen kann, und habe die offensichtliche Lösung "das ganze /home syncen" deswegen verworfen. Mein Ansatz sieht zurzeit wie folgt aus:
1. Wichtige textbasierte Konfigurationsdateien (Shell, vim, Firefox, etc.) liegen in einem Git-Repo (https://github.com/majewsky/devenv). Die entsprechenden Files existieren im Home-Verzeichnis als Symlinks in das Repo (siehe install.sh in dem Repo). Ab und an committe ich die Änderungen in diesem Repo und pulle auf den anderen Systemen.
2. Bestimmte Binärdateien (insb. LibreOffice-Kram), von denen ich weiß, dass ich sie auf verschiedenen Systemen bearbeiten möchte, liegen ebenfalls in Git-Repos. Diese committe und pushe ich immer sofort nach dem Bearbeiten, damit keine Konflikte entstehen.
3. Alle Systeme schreiben ihr /home-Backup zum selben Server. Wenn ich mal eine Datei brauche, die auf einem anderen System liegt und nicht in Versionskontrolle ist, kann ich sie mir aus dem Backup des entsprechenden Systems holen.
4. Bestimmte Applikationen haben ihr Sync schon eingebaut. Das Thunderbird-Verzeichnis muss ich nicht syncen, denn die Mails liegen eh auf dem Mailserver und sind per IMAP erreichbar. Analog könnte man Firefox-Einstellungen per Firefox Sync in Form halten. (Dieser Ansatz setzt natürlich voraus, dass man dem Anbieter der Sync-Server vertraut.)
Mir ist klar, dass das nicht die Antwort ist, die du hören möchtest. Aber das Problem, wie du es beschreibst, ist hinreichend kompliziert, dass ich dir empfehlen würde: "Pick your fights". Synchronisiere die Sachen, die dir wichtig sind. Und schere dich nicht um die anderen 20.000 Config-Files, die eh nicht interessant sind und nur andauernd Merge-Konflikte erzeugen.
Schöne Grüße Stefan
Hi Stefan,
Am 12.01.2020 14:21 schrieb nac:
Ausgangssituation; 3x Debian 10 "buster" die sich regelmäßig mal in einem Netz treffen, aber auch mal getrennt von einander existieren. Ich hätte gern mein /home auf allen 3 Systemen gleichermaßen verfügbar und aktuell.
Bevor du konkrete technische Lösungen suchst, mach dir klar, dass dieses Problem (so wie beschrieben) schon auf der konzeptuellen Ebene so gut wie unlösbar ist.
Der einfache Fall (der tatsächlich lösbar sein kann) ist, wenn zu jedem Zeitpunkt nur maximal eines dieser drei Systeme aktiv ist. Dann gibt es keine Bearbeitungskonflikte. Dann bleibt "nur" die Frage, wie man bei beweglichen Systemen (Notebooks, Tablets etc.) auf die Hauptkopie des /home zugreift.
Sobald mehrere Systeme parallel aktiv sind, stellt sich die Frage, wie die Änderungen an den verschiedenen /home zusammengeführt werden sollen. Bei Textdateien ist ein `git merge` oder ähnlich noch ziemlich machbar, aber was machst du bei Binärdateien? Firefox zum Beispiel legt jede Menge Kram in SQLite-Datenbanken ab. Und selbst wenn du dafür ein passendes Merge-Tool hast, stellt sich die Frage, wie du inhaltliche Merge-Konflikte auflöst.
Gute Kritik.
Ich habe vor Jahren auch schon mal überlegt, ob ich mein /home zwischen dem Desktop-PC zuhause und meinem Notebook syncen kann, und habe die offensichtliche Lösung "das ganze /home syncen" deswegen verworfen. Mein Ansatz sieht zurzeit wie folgt aus:
- Wichtige textbasierte Konfigurationsdateien (Shell, vim, Firefox,
etc.) liegen in einem Git-Repo (https://github.com/majewsky/devenv). Die entsprechenden Files existieren im Home-Verzeichnis als Symlinks in das Repo (siehe install.sh in dem Repo). Ab und an committe ich die Änderungen in diesem Repo und pulle auf den anderen Systemen.
Die Symlinks nutzt du um alles in einem Repo zu haben? Warum nicht einfach von /home aus alles? Das würde doch die Symlinks und damit die install.sh überflüssig machen.
- Bestimmte Binärdateien (insb. LibreOffice-Kram), von denen ich weiß,
dass ich sie auf verschiedenen Systemen bearbeiten möchte, liegen ebenfalls in Git-Repos. Diese committe und pushe ich immer sofort nach dem Bearbeiten, damit keine Konflikte entstehen.
- Alle Systeme schreiben ihr /home-Backup zum selben Server. Wenn ich
mal eine Datei brauche, die auf einem anderen System liegt und nicht in Versionskontrolle ist, kann ich sie mir aus dem Backup des entsprechenden Systems holen.
- Bestimmte Applikationen haben ihr Sync schon eingebaut. Das
Thunderbird-Verzeichnis muss ich nicht syncen, denn die Mails liegen eh auf dem Mailserver und sind per IMAP erreichbar. Analog könnte man Firefox-Einstellungen per Firefox Sync in Form halten. (Dieser Ansatz setzt natürlich voraus, dass man dem Anbieter der Sync-Server vertraut.)
Das ist schon mal eine interessante Lösung und gibt mir auf jedenfall neue Denkanstöße. Ich tendiere nun auch mehr in so eine Richtung.
Mir ist klar, dass das nicht die Antwort ist, die du hören möchtest. Aber das Problem, wie du es beschreibst, ist hinreichend kompliziert, dass ich dir empfehlen würde: "Pick your fights". Synchronisiere die Sachen, die dir wichtig sind. Und schere dich nicht um die anderen 20.000 Config-Files, die eh nicht interessant sind und nur andauernd Merge-Konflikte erzeugen.
Ach ich hatte keine direkten Erwartungen. Ich bin glücklich über jeden Input den ich bekomme und werde sehen was am Ende für mich passt. Vielen lieben danke.
vlg
nac
Hi,
On 12.01.20 15:11, nac wrote:
Ach ich hatte keine direkten Erwartungen. Ich bin glücklich über jeden Input den ich bekomme und werde sehen was am Ende für mich passt. Vielen lieben danke.
ich habe gerade gesehen dass meine Antwort von letzter Woche nicht an die Liste gegangen ist. Ergänzen wollte ich noch Syncthing[1], dass bei mir ziemlich zuverlässig bestimmte Bereiche des Home-Directories (Bilder, Dokumente außerhalb der Versionskontrolle) synchron hält. Für sich auf beiden Seiten zeitgleich verändernde Dateien ist es nicht geeignet; als Sicherheitsnetz gibt es aber zumindest Dateiversionierung bzw. eine Papierkorb-Funktion. Es gibt Syncthing für alle relevanten Betriebssysteme. Ich benutze es auf Windows, NetBSD und Android.
Viele Grüße Matthias
On Sun, Jan 12, 2020 at 02:21:40PM +0100, nac wrote:
ich suche gerade nach einer praktikablen Lösung mein /home auf weitere Rechner zu syncen.
Ausgangssituation; 3x Debian 10 "buster" die sich regelmäßig mal in einem Netz treffen, aber auch mal getrennt von einander existieren. Ich hätte gern mein /home auf allen 3 Systemen gleichermaßen verfügbar und aktuell.
Ds Programm Unison (gibts ein Debian-Package für) kann automatisch in beiden Richtungen syncen. Es merkt sich, was wo war und macht alles richtig. Wenn es einen Konflikt gibt, dann muss man den halt von Hand auflösen. Das funktioniert wirklich sehr gut, ich hab das jahrelang benutzt, um meinen Arbeitsplatzrechner und Notebook zu syncen. Ich hab dann immer bevor ich den Notebook mitgenommen habe einen Sync gemacht und gleich nachdem ich wieder zu Hause war wieder den Sync.
Wenn man beide gleichzeitig Rechner verwendet, ohne zu syncen, dann hat man viel zu viele konkurrierende Änderungen in dot-Dateien und dergl von den ganzen Anwendungen. Das macht dann keinen Spass mehr. Wenn Du nur einen Teil vom Home syncst, also Deine eigenen Dateien und all die Sachen wie .cache und .config nicht, dann sollte das okay sein.
Das ganze geht erstmal nur zwischen zwei Rechnern. Bei drei Rechnern geht es auch, wenn Rechner A immer nur mit B und C redet, aber die B und C nicht untereinander. Solange man häufig genug Unison aufruft in der Richtigen Reihenfolge, dann geht das.
Jochen
lug-dd@mailman.schlittermann.de