it-swarm.com.de

Wie synchronisiere ich den Home-Ordner zwischen mehreren Computern?

Ich habe drei Computer zu Hause und möchte, dass der Ordnerbaum /home/ zwischen den drei synchronisiert wird.
Alle Dateien/Ordner (außer den ausgeblendeten), die auf einem der drei Computer geändert, hinzugefügt oder entfernt wurden, werden auf den beiden anderen Computern aktualisiert.

Reichtrsyncdafür aus? und wie?

112
lamcro

Hier ist eine Liste von Dingen, die dieses Problem möglicherweise lösen könnten. Beide gleichen die Kompromisse aus, die Sie anders eingehen müssen, sodass Sie Ihre eigenen Entscheidungen treffen und die Dinge selbst ausprobieren müssen:

  • Unison - Wie von anderen erwähnt, wird dies manuell ausgeführt, ist aber sehr schnell, zuverlässig und effektiv. Erfordert, dass beide Maschinen synchronisiert sind, um gleichzeitig eingeschaltet zu sein. Es hat eine nette Benutzeroberfläche, mit der Sie mit den fast unvermeidlichen Konflikten umgehen und Löschungen korrekt verfolgen und verbreiten können. Die grafische App/das grafische Paket heißt unison-gtk.

  • OwnCloud - Cloud-Speicher wird auf Ihrem eigenen Server ausgeführt. Sie brauchen eine Maschine, um sie laufen zu lassen. Erfordert eine angemessene Menge an Setup. Führt einen vollständigen Apache 2-Webserver und eine SqlLite- oder MySQL-Datenbank auf dem Server aus. Funktioniert ähnlich wie Dropbox mit einem Desktop-Client, der Server ist jedoch unter Ihrer Kontrolle. Bearbeiten: OwnCloud hat in letzter Zeit einige Änderungen an der Ausführung des Projekts vorgenommen und verfügt nun über eine neue vollständig Open Source-Version (dh keine Closed Source-Enterprise-Edition) unter dem Deckmantel von NextCloud (siehe diese Youtube-Interview mit dem ursprünglichen OwnCloud-Entwickler für weitere Details).

  • SparkleShare - verwendet Git, um Dateien synchron zu halten. Laut Homepage: gut für viele kleinere Dateien, nicht gut für viele große Dateien wie Musik oder Fotosammlung.

  • Seafile - Stellt eine Serverkomponente bereit, die Sie auf einem lokalen Computer installieren können. Seafile verwendet ein Datenmodell ähnlich wie git zum Verfolgen von Änderungen. Bietet Synchronisierungsclients für Desktops, Tablets und Smartphones. Ein Blog-Beitrag, der das Setup beschreibt, ist zu finden unter http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - "... bidirektionales Dateisynchronisationstool, das in bash geschrieben und auf rsync basiert. Es funktioniert auf lokalen und/oder Remote-Verzeichnissen über SSH-Tunnel. Es soll hauptsächlich als Cron-Task gestartet werden" (Text aus Die Webseite)

  • PowerFolder - Java-basiertes GPL v2-Projekt. Die Hauptwebsite pusht kommerzielle Angebote, sodass nicht klar ist, wie die bereitgestellte JAR-Datei verwendet werden soll.

  • Rsync - ist schnell und effektiv und seit Jahrzehnten verfügbar. Es wird jedoch kein Verlauf geführt, sodass Sie eine Richtung auswählen müssen, um zu entscheiden, ob eine Datei neu oder gelöscht ist. Es stehen grafische Werkzeuge wie gwRsync zur Verfügung.

  • Lsyncd - Überwacht Ordner/Dateien, um die Rsync-Replikation auszulösen

  • dvcs-autosync - in Python geschrieben, verwendet git zum Speichern und Freigeben von Änderungen zwischen Computern und XMPP zum Kommunizieren von Änderungen.

  • git-annex - Kommandozeilen-Tool zum Verschieben von Dateien basierend auf git. Hier finden Sie eine exemplarische Vorgehensweise: http://git-annex.branchable.com/walkthrough/

  • Tonido - Freeware. Bietet eine Desktop-App, mit der Dateien für andere Geräte freigegeben werden können. Stellen Sie auch kommerzielle Cloud-Angebote und den TonidoPlug-Plug-Computer bereit.

  • BitTorrent Sync (Freeware) - Peer-to-Peer-Dateisynchronisierung basierend auf BitTorrent. Ich weiß nicht viel darüber, da ich es nicht verwenden werde, da es kein Open Source ist und ich nicht darauf vertraue, dass meine Daten in meinem LAN bleiben. Sie können diese Antwort auch mit besseren Informationen/echten Erfahrungen bearbeiten.

  • SyncThing - Entwickelt als Open Source Alternative zu BitTorrent Sync. Derzeit fehlen einige der erweiterten Funktionen von BitTorrent Sync, z. B. nicht vertrauenswürdige Peers. Es befindet sich in aktiver Entwicklung.

  • Kommerziell gehostete Dienste wie Dropbox, Ubuntu One, Google Drive und Apple iCloud sind alle schnell, günstig und bequem. Sie erfordern jedoch das Vertrauen in ein Unternehmen mit all Ihren Daten und benötigen eine relativ schnelle Internetverbindung.

  • Git / Subversion - Verwenden Sie ein Versionsverwaltungssystem direkt. Vollständig manuell und kann ein wenig komplexer, aber beliebter Ansatz sein, wenn einige Benutzer mit diesen Systemen vertraut sind, weil sie sie als Programmiertools verwenden.

  • CloudFS - Synchronisation eines ganzen Dateisystems, basierend auf Cluster-Technologie

  • NFS-Mount - im Grunde lebt Ihr Zuhause auf einem Computer und Sie greifen über das Netzwerk darauf zu. Dies ist nicht gut für Laptops, die Sie mitnehmen. Weitere Informationen: http://www.linuxjournal.com/article/4880


Faktoren, die Sie bei Ihrer Entscheidung berücksichtigen sollten:

  • Zentraler Server - Einige Lösungen erfordern, dass ein Computer die ganze Zeit eingeschaltet ist (oder zumindest, wenn Sie synchronisieren müssen), damit andere Computer mit ihm synchronisieren können. Dies kann einer Ihrer vorhandenen Computer oder ein separater Computer wie ein NAS sein. Achten Sie auf erhöhte Stromkosten.

  • Automatisch/Manuell/Geplant - Die beste Möglichkeit, Konflikte zu vermeiden, bei denen Änderungen an mehr als einer Maschine vorgenommen werden, besteht darin, auf jeder Maschine ein Programm zu installieren, das sofort auf Änderungen und Synchronisierungen achtet. Auf diese Weise verringern Sie die Wahrscheinlichkeit, dass mehrere Änderungen auftreten Versionen. Bei manuellen Prozessen müssen Sie immer daran denken, die Synchronisation durchzuführen.

  • Remotezugriff - Möchten Sie eine Synchronisierung außerhalb Ihres LANs (auch als Heimnetzwerk bezeichnet) durchführen, überlegen Sie, welche Sicherheitsrisiken dies hat.

  • Sicherheit - Verlassen Ihre Daten Ihr Netzwerk verschlüsselt oder nicht? Wie sicher ist die Übertragung zwischen Computern? Was passiert, wenn jemand Ihre Daten unterwegs erfasst und später Fehler bei der Verschlüsselung festgestellt werden? Wer kontrolliert den Server, auf dem Ihre Daten gespeichert sind, sind die Daten verschlüsselt? Können Sie Dritten vertrauen? Müssen Sie Löcher in Ihren Router stecken, um Fernzugriff zu erhalten? Wie lange bleiben 'gelöschte' Dateien und zugehörige Metadaten auf den synchronisierten Geräten und auf dem zentralen Server erhalten? Synchronisieren Sie zwischen verschlüsseltem und unverschlüsseltem Speicher?

  • Verschieben großer Ordner - Die Lösungen, die ich ausprobiert habe, haben alle das Problem, dass beim Verschieben/Umbenennen einer Datei oder eines Ordners die Synchronisierung dies nicht versteht und erneut als neu hochlädt und dann die alte Kopie löscht. Bitte helfen Sie mit, indem Sie alle Lösungen markieren, die in der Lage sind, damit umzugehen. (Ich vermute, dass die git-basierten Lösungen dies tun, da git aufgrund der verwendeten inhaltsbasierten Adressierung nicht darunter leidet, aber ich weiß es nicht genau habe sie nicht benutzt).

  • Festplattenkapazität

  • Backups - Synchronisation ist kein Backup. Wenn Sie versehentlich eine wichtige Datei löschen, werden in vielen Fällen alle anderen Kopien fröhlich gelöscht. Ich empfehle, Mat Honans Artikel über das Hacken zu lesen, um einen guten Überblick darüber zu erhalten, was passieren kann, wenn Sie sozusagen alle Ihre digitalen Eier in einen digitalen Korb legen.


Ich empfehle, nicht den gesamten Basisordner zu synchronisieren, sondern bestimmte Ordner für die Synchronisierung auszuwählen, z. B. Documents/, Pictures/ usw. Dadurch wird vermieden, dass Sie gezwungen sind, sich mit den Problemen in Bezug auf Geschwindigkeit, Leistung und Speicherplatz zu befassen, die bei der automatischen Synchronisierung aller Daten auftreten. Es wird auch vermieden, Ausschlusslisten führen zu müssen.

Während ich weiterhin versuche, etwas zu finden, das für mich persönlich funktioniert, versuche ich, diese Antwort mit nützlichen Informationen auf dem neuesten Stand zu halten. Ich habe die Informationen aus allen anderen Antworten zu einer vollständigen Antwort zusammengefasst.

Verweise:

  • LinuxFormat - Februar 2014 LXF180 p31, "Hosted Storage Roundup"

hacken/alle /

86
Tim Abell

Unison könnte ein guter Kandidat sein:

Unison ist ein Dateisynchronisationstool für Unix und Windows. Damit können zwei Replikate einer Sammlung von Dateien und Verzeichnissen auf verschiedenen Hosts (oder verschiedenen Festplatten auf demselben Host) gespeichert, separat geändert und dann aktualisiert werden, indem die Änderungen in jedem Replikat auf den anderen übertragen werden.

Es werden bereits 2-Wege-Synchronisationen durchgeführt. Siehe Update unten.

Ich habe gelernt, dass es nur sehr wenige Dinge gibt, die rsync nicht kann, und dass dies wahrscheinlich eine gleichwertige oder bessere Lösung sein kann, aber Sie müssen warten, bis ein rsync-Experte für diese Lösung erscheint.

Update: Ja, Unison kann mehr als 2 Maschinen synchronisieren. Aus ihrer Bedienungsanleitung :

Mit Unison mehr als zwei Maschinen synchronisieren

Unison dient zum Synchronisieren von Replikatenpaaren. Es ist jedoch möglich, damit größere Gruppen von Computern synchron bleiben, indem mehrere paarweise Synchronisierungen durchgeführt werden.

Wenn Sie dies tun müssen, ist es am zuverlässigsten, die Maschinen in einer "Sterntopologie" zu organisieren, wobei eine Maschine als "Hub" und der Rest als "Speichen" bezeichnet wird und jede Speichenmaschine synchronisiert nur mit der Nabe. Der große Vorteil der Sterntopologie besteht darin, dass die Gefahr von „falschen Konflikten“ ausgeschlossen ist, die dadurch entstehen, dass Unison für jedes synchronisierte Host-Paar ein separates Archiv verwaltet.

28
nagul

Wie wäre es, Ihre Dateien in ein Versionskontrollsystem wie Subversion oder git zu packen?

Ich versioniere nicht mein gesamtes Heimverzeichnis, sondern nur eine Handvoll Unterverzeichnisse mit einigen wichtigen Dingen. Aber ich denke darüber nach, auf Git umzusteigen, da es für diese Art von Arbeit besser zu sein scheint. ( eine schnelle Suche wird Sie in die richtige Richtung schicken ).

Viel Glück


Update : Ein netter Nebeneffekt von git ist, dass es einfach ist, computerspezifische Dateien zu haben, da Sie nur eine Verzweigung für diesen Computer benötigen (und in git erhalten Sie diese standardmäßig). Sie müssen also nicht auf allen Computern genau die gleichen Dateien haben, sondern müssen nur ähnlich sein und einen gemeinsamen "Haupt" -Zweig mit allem haben, was auf den verschiedenen Computern benötigt wird.

19
Johan

Das Hauptproblem bei diesem Versuch besteht darin, zu entscheiden, wie Änderungen zusammengeführt, Löschvorgänge weitergegeben und Konflikte gelöst werden sollen. Dies ist auf vollständig automatisierte Weise schwierig, insbesondere wenn Sie ein 3-Computer-Setup haben, das von mehreren Personen verwendet wird.

Wenn Sie Benutzer trennen, wird es viel einfacher. Da ein Benutzer nicht gleichzeitig an zwei Orten sein kann (und daher Konflikte erzeugt), können Sie einen rsync-Job einrichten, der bei der Anmeldung ausgeführt wird, um "Änderungen abzurufen" und sich bei "Änderungen übertragen" abzumelden ... auf einen Ihrer Computer, der wäre der Meister ... also würden Sie auf dieser Granularitätsebene jedes Mal/home/myuser synchronisieren und nicht das gesamte/home /. Eine zusätzliche Verbesserung (für den Fall, dass sich Benutzer nicht abmelden) würde das Push-Skript nach einer kurzen Zeit der Inaktivität ausführen.

Es gibt viele andere mögliche Lösungen, aber keine, die dieses Problem auf magische Weise lösen, soweit ich weiß. Der erste Schritt besteht wahrscheinlich darin, darüber nachzudenken, wie Sie die Computer verwenden, und eine Synchronisierungsrichtlinie zu erstellen, die dem Verhalten Ihres Benutzers entspricht.

6
Ira Cooke

Ich denke, Sie können das, was Sie wollen, besser erreichen, indem Sie mit NFS einen gemeinsamen Home-Ordner mounten. Lesen Sie diesen Artikel http://www.linuxjournal.com/article/4880

5
jspeaks

Check out lsyncd

Lsyncd überwacht eine Ereignisüberwachungsschnittstelle für lokale Verzeichnisbäume (inotify oder fsevents). Es aggregiert und kombiniert Ereignisse für einige Sekunden und erzeugt dann einen (oder mehrere) Prozesse, um die Änderungen zu synchronisieren. Standardmäßig ist dies rsync. Lsyncd ist somit eine leichte Live Mirror-Lösung, die vergleichsweise einfach zu installieren ist und keine neuen Dateisysteme oder Blockgeräte erfordert und die Leistung des lokalen Dateisystems nicht beeinträchtigt.

Rsync + ssh ist eine erweiterte Aktionskonfiguration, die eine SSH verwendet, um Datei- und Verzeichnisverschiebungen direkt auf dem Ziel auszuführen, anstatt das Verschiebungsziel erneut über die Leitung zu übertragen.

Fein abgestimmte Anpassungen können über die Konfigurationsdatei vorgenommen werden. Benutzerdefinierte Aktionskonfigurationen können sogar in kaskadierenden Ebenen von Shell-Skripten bis hin zu Code in der Sprache Lua von Grund auf neu geschrieben werden. Ebenen von Shell-Skripten bis hin zu Code in der Sprache Lua.

4
eric

Dies wird keine vollständige Lösung bieten, aber es wird Ihnen einen Anfang geben:

Richten Sie ab und zu einen Cron-Job ein, um die Dateien zu synchronisieren. Ich benutze einen Befehl wie den folgenden:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh [email protected]:/path/to/home/

Dadurch wird rsync verwendet, um nur die erforderlichen Änderungen zu kopieren und nicht jedes Mal, wenn der Befehl ausgeführt wird, alles neu zu kopieren.

--stats und --progress sind optional und sollten wahrscheinlich aus Ihren Skripten ausgeschlossen werden

der Inhalt meiner rsync_backup_excludes.conf-Datei ist:

dev/*
proc/*
lost+found/*
mnt/*
sys/*
4
Matt Cofer

Hängen Sie den /home von einem Computer auf die beiden anderen ein. Automount funktioniert dafür ziemlich gut.

2
Xenoactive

Schauen Sie sich dropbox http://www.getdropbox.com/ Plattformübergreifendes Win/Linux/Mac an

2
Boxdog

PowerFolder - Dateien synchronisieren, Ordner synchronisieren, Remotespeicherung, Sicherung und gemeinsame Nutzung privater Dateien. Synchronisieren Sie Ihren Heim- und Büro-PC, geben Sie Urlaubsbilder frei oder arbeiten Sie gemeinsam an Dokumenten. Die sichere Peer-to-Peer-Technologie von PowerFolder funktioniert über das Internet oder im LAN.

1
Molly7244

Versuchen Sie dvcs-autosync .

Dies basiert auf git, verwendet XMPP, um verbundene Clients über Dateiänderungen zu benachrichtigen und reagiert auf Dateiänderungsereignisse über Inode-Änderungen. So wird es immer gleich nach dem Dateiwechsel informiert, im Konfliktfall verlässt es sich auf die bewährten Methoden von Git.

Ich benutze es seit einiger Zeit als Dropbox-Ersatz über öffentliche SSH-Schlüssel und es macht wirklich den Job.

1
schlypel

Wenn Sie auch Konfigurationsdateien synchronisieren möchten, sind die oben genannten Tools völlig hilflos: Konfigurationsdateien werden häufig geändert, und viele Protokolldateien führen zu Konflikten, sodass sie nicht zusammengeführt werden können.
Meine Entscheidung ist einfach und dumm :) Ich habe eine Master-Workstation, und alle Dateien von "~" werden nur auf die zweite "Slave" -Datei kopiert. In dem Moment, in dem ich merke, dass ich etwas ändern muss, mache ich es auf dem Master und der Slave fängt diese Änderungen bei der Synchronisation auf.

Außerdem sollten einige Bash-Skripte auf diesen Rechnern anders laufen, deshalb habe ich meine /etc/bash.bashrc bearbeitet:

export OOHOST = Master

Jetzt wissen Skripte, welchen Host sie bedienen;)

1
kolypto

Ubuntu One könnte das sein, was Sie suchen. Leider ist es noch in der Beta-Phase und ich habe keine Erfahrung damit, also bin ich mir nicht sicher, ob es für Sie funktionieren würde.

1
Ilari Kajaste

Sie können ein Synchronisationsskript wie osync verwenden, das gelöschte Dateien weitergibt und nur geänderte aktualisiert. http://www.netpower.fr/osync osync ist rsync-basiert, kann jedoch viele Synchronisierungsszenarien zwischen lokalen oder fernen Ordnern über ssh verarbeiten.

0
Orsiris de Jong

Ich verwende SyncTwoFolders für Mac und Syncback für PC - den ersten für meine drei Macs zu Hause (einschließlich Laptop) und den zweiten für meinen PC bei der Arbeit. Beide Programme verfügen über verschiedene Sicherungs- und Synchronisierungsoptionen, sodass dies nach dem Einrichten der Voreinstellungen ein Kinderspiel ist. Kinderleicht! Ich bin sicher, dass es andere Versionen ähnlicher Software für Linux und Ubuntu gibt.

0

Die Problemumgehungen, die ich in Betracht ziehen würde:

  • Dropbox.
    Hauptnachteile: Es ist nicht kostenlos für eine angemessene Datenmenge. Ansonsten funktioniert es meiner Meinung nach einwandfrei

  • Ein NAS Server. Legen Sie Ihre Dateien auf einen NAS Server, sie wurden in letzter Zeit einigermaßen erschwinglich (ab 150 USD) und ein guter Server verbraucht nicht viel Energie. Keine Synchronisierungsprobleme.
    Hauptnachteil: langsamer als eine lokale Kopie

0
Rabarberski