2009-08-28 18:10:40 +0000 2009-08-28 18:10:40 +0000
121
121

Wie kann ich den Home-Ordner zwischen mehreren Computern synchronisieren?

Ich habe drei Computer zu Hause und würde gerne die /home/ Ordnerstruktur zwischen den drei Computern synchronisieren lassen.
Alle Dateien/Ordner (außer den versteckten), die auf einem der drei Computer geändert/hinzugefügt/entfernt werden, werden auf den anderen beiden aktualisiert.

Reicht rsync aus, um dies zu tun? und wie?

Antworten (14)

97
97
97
2014-01-18 17:52:37 +0000

Hier ist eine Liste von Dingen, die dieses Problem potenziell lösen könnten. Jedes gleicht die Kompromisse, die Sie eingehen müssen, anders aus, so dass Sie Ihre eigenen Entscheidungen treffen und die Dinge für sich selbst ausprobieren müssen:

  • Unison - wie von anderen erwähnt, wird dies manuell ausgeführt, ist aber sehr schnell, zuverlässig und effektiv. Es erfordert, dass beide zu synchronisierenden Rechner gleichzeitig eingeschaltet sind. Es hat eine schöne Benutzeroberfläche, die es Ihnen ermöglicht, mit den fast unvermeidlichen Konflikten umzugehen, und verfolgt und propagiert Löschungen korrekt. Das grafische Programm/Paket heißt unison-gtk.

  • OwnCloud - Cloud-Speicher, der auf Ihrem eigenen Server läuft. Sie brauchen einen Rechner, auf dem Sie gehen können. Erfordert eine angemessene Menge an Einrichtung. Läuft mit einem kompletten Apache 2 Webserver und einer SqlLite oder MySQL Datenbank auf dem Server. Funktioniert ähnlich wie Dropbox mit einem Desktop-Client, aber der Server ist unter Ihrer Kontrolle. edit : OwnCloud hat vor kurzem einige Änderungen in der Art und Weise durchlaufen, wie das Projekt betrieben wird, und hat jetzt eine neue, vollständig quelloffene (d.h. keine Closed-Source-“Enterprise”-Edition) unter dem Namen NextCloud , (siehe dieses 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 Fotosammlungen.

  • Seafile - Bietet eine Serverkomponente, die Sie auf einem lokalen Rechner installieren können. Seafile verwendet ein Datenmodell ähnlich wie git zur Verfolgung von Änderungen. Bietet Sync-Clients für Desktops, Tablets und Smartphones. Ein Blogbeitrag, der die Einrichtung beschreibt, findet sich unter http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/

  • Osync - “… bidirektionales Dateisynchronisationswerkzeug, das in Bash geschrieben ist und auf rsync basiert. Es arbeitet auf lokalen und / oder entfernten Verzeichnissen über ssh-Tunnel. It’s mainly targeted to be launched as cron task” (Text von der Webseite)

  • PowerFolder - java based GPL v2 project. Die Haupt-Website wirbt mit kommerziellen Angeboten, so dass nicht klar ist, wie die mitgelieferte .jar-Datei zu verwenden ist.

  • Rsync - schnell und effektiv und schon seit Jahrzehnten im Einsatz, allerdings führt es keine Historie, so dass Sie eine Richtung wählen müssen, um zu entscheiden, ob eine Datei neu oder gelöscht ist. Es gibt grafische Werkzeuge wie gwRsync .

  • Lsyncd - überwacht Ordner/Dateien, um die rsync-Replikation auszulösen

  • dvcs-autosync - in Python geschrieben, verwendet Git, um Änderungen zu speichern und zwischen Rechnern auszutauschen, und XMPP, um Änderungen zu kommunizieren.

  • git-annex - Kommandozeilenwerkzeug zum Verschieben von Dateien, basierend auf git. Es gibt eine anschauliche Anleitung hier: http://git-annex.branchable.com/walkthrough/

  • Tonido - Freeware. Bietet eine Desktop-Applikation, die Dateien für andere Geräte freigeben kann. Bietet auch kommerzielle Cloud-Angebote und den TonidoPlug-Steckcomputer.

  • BitTorrent Sync (Freeware) - Peer-to-Peer-Dateisynchronisation auf Basis von BitTorrent. Ich weiß nicht viel darüber, da ich es nicht verwenden werde, da es nicht quelloffen ist und ich nicht darauf vertraue, dass es meine Daten innerhalb meines LANs hält. Sie können diese Antwort gerne mit besseren Informationen / echten Erfahrungen bearbeiten.

  • SyncThing - Entwickelt als eine 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.

  • Kommerzielle gehostete Dienste wie Dropbox, Ubuntu One, Google Drive und Apple iCloud sind alle schnell, billig und bequem, erfordern aber alle, dass Sie Ihre Daten einem Unternehmen anvertrauen, und benötigen eine einigermaßen schnelle Internetverbindung.

  • Git / subversion - Verwenden Sie direkt ein Versionskontrollsystem. Vollständig manuell und kann ein wenig komplex sein, aber ein beliebter Ansatz bei einigen Benutzern, die mit diesen Systemen von der Verwendung als Programmierwerkzeug vertraut sind.

  • CloudFS - syncronisiert ein ganzes Dateisystem, basierend auf Cluster-Technologie

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


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

  • Zentraler Server - bei einigen Lösungen muss ein Rechner immer eingeschaltet sein (oder zumindest dann, wenn Sie synchronisieren müssen), mit dem sich andere Rechner synchronisieren können. Dies könnte einer Ihrer vorhandenen Rechner sein oder ein separater Rechner, wie z. B. ein NAS. Achten Sie auf erhöhte Stromrechnungen.

  • Automatisch / Manuell / Geplant - Der beste Weg, um Konflikte zu vermeiden, wenn etwas auf mehr als einem Rechner geändert wird, ist ein Programm auf jedem Rechner, das auf Änderungen achtet und sofort synchronisiert; auf diese Weise reduzieren Sie die Möglichkeit, dass am Ende mehrere Versionen vorhanden sind. Bei manuellen Prozessen müssen Sie immer daran denken, die Synchronisation durchzuführen.

  • Fernzugriff - wollen Sie außerhalb Ihres LANs (aka zu Hause) synchronisieren, denken Sie über die damit verbundenen Sicherheitsimplikationen nach.

  • Sicherheit - verlassen Ihre Daten Ihr Netzwerk verschlüsselt oder nicht, wie sicher ist die Übertragung zwischen den Rechnern. Was ist, wenn jemand Ihre Daten unterwegs abfängt und sich später herausstellt, dass die Verschlüsselung Schwachstellen aufweist? Wer kontrolliert den Server, auf dem Ihre Daten liegen, sind die Daten verschlüsselt, können Sie Dritten vertrauen? Müssen Sie Löcher in Ihren Router bohren, um Fernzugriff zu bekommen? 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 von großen Ordnern - die Lösungen, die ich ausprobiert habe, haben alle das Problem, dass wenn Sie eine Datei oder einen Ordner verschieben/umbenennen, der Sync dies nicht versteht und alles wieder als neu hochlädt und dann die alte Kopie löscht. Bitte helfen Sie mit, indem Sie die oben genannten Lösungen markieren, die mit diesem Problem umgehen können (ich vermute, dass die Git-basierten Lösungen dies können, da Git aufgrund der inhaltsbasierten Adressierung nicht darunter leidet, aber ich weiß es nicht genau, da ich sie nicht verwendet habe).

  • Festplattenkapazität

  • Backups - Synchronisation ist kein Backup. Wenn Sie eine wichtige Datei versehentlich löschen, werden viele der oben genannten Kopien fröhlich gelöscht. Ich empfehle die Lektüre von Mat Honan’s piece on being hacked für eine gute Darstellung dessen, was passieren kann, wenn Sie sozusagen alle Ihre digitalen Eier in einen digitalen Korb legen.


Ich empfehle, nicht den gesamten Home-Ordner zu synchronisieren, sondern stattdessen bestimmte Ordner auszuwählen, die synchronisiert werden sollen, z. B. Documents/, Pictures/ usw. So vermeiden Sie, dass Sie sich mit den Geschwindigkeits-, Leistungs- und Speicherplatzproblemen auseinandersetzen müssen, die bei einer automatischen Synchronisierung auftreten. Es vermeidet auch, dass Sie Ausschlusslisten pflegen müssen.

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

Referenzen:

  • LinuxFormat - Februar 2014 LXF180 p31, “Hosted Storage Roundup”

hacking/all/

19
19
19
2009-08-29 22:07:36 +0000

Wie wäre es, wenn Sie Ihre Dateien in einem Versionskontrollsystem wie SubVersion oder git ablegen?

Ich versioniere nicht mein gesamtes Home-Verzeichnis, sondern nur eine Handvoll Unterverzeichnisse mit einigen wichtigen Sachen. Aber ich denke darüber nach, zu git zu konvertieren, da es für diese Art von Arbeit besser geeignet 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 man nur einen Zweig für diesen Computer haben muss (und in Git bekommt man das standardmäßig). Sie müssen also nicht genau die gleichen Dateien auf allen Computern haben, sie müssen nur ähnlich sein, und einen gemeinsamen “Haupt”-Zweig mit den Dingen haben, die Sie auf allen verschiedenen Computern haben wollen.

6
6
6
2009-08-29 09:43:00 +0000

Ihr Hauptproblem bei dem Versuch, dies zu tun, ist die Entscheidung, wie Sie Änderungen zusammenführen, Löschungen propagieren und Konflikte auflösen. Das ist schwer zu automatisieren, besonders wenn Sie 3 Computer haben, die von mehreren Personen benutzt werden.

Wenn Sie die Benutzer trennen, wird es viel einfacher. Da ein Benutzer nicht an zwei Orten gleichzeitig sein kann (und somit Konflikte erzeugen kann), könnten Sie einen rsync-Job einrichten, der bei der Anmeldung läuft, um “Änderungen zu holen” und bei der Abmeldung, um “Änderungen zu übertragen” … auf einen Ihrer Computer, der der Master wäre … auf dieser Granularitätsebene würden Sie also jedes Mal /home/myuser synchronisieren und nicht das gesamte /home/. Eine zusätzliche Verfeinerung (für den Fall, dass sich Leute nicht abmelden) wäre, das Push-Skript nach einer kurzen Zeit der Inaktivität auszufü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 ist wahrscheinlich, darüber nachzudenken, wie Sie die Rechner nutzen und eine Synchronisierungsrichtlinie zu entwickeln, die dem Verhalten Ihrer Benutzer entspricht.

5
5
5
2010-06-11 20:05:12 +0000

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

4
4
4
2010-06-11 21:20:04 +0000

Schauen Sie sich lsyncd

Lsyncd überwacht eine lokale Verzeichnisbaum-Ereignisüberwachungsschnittstelle (inotify oder fsevents). Es sammelt und kombiniert Ereignisse für ein paar Sekunden und startet dann einen (oder mehrere) Prozess(e), um die Änderungen zu synchronisieren. In der Voreinstellung ist dies rsync. Lsyncd ist also eine leichtgewichtige Live-Mirror-Lösung, die vergleichsweise einfach zu installieren ist, keine neuen Dateisysteme oder Blockdevices benötigt und die Leistung des lokalen Dateisystems nicht beeinträchtigt.

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

Feinkörnige Anpassungen können über die Konfigurationsdatei vorgenommen werden. Benutzerdefinierte Aktionskonfigurationen können sogar von Grund auf in kaskadierenden Schichten geschrieben werden, die von Shell-Skripten bis zu in der Lua-Sprache geschriebenem Code reichen.schichten, die von Shell-Skripten bis zu in der Lua-Sprache geschriebenem Code reichen.

4
4
4
2009-08-28 18:34:44 +0000

Dies wird keine vollständige Lösung sein, aber es ist ein Anfang:

Richten Sie einen Cron-Job ein, der die Dateien in regelmäßigen Abständen rsynchronisiert. Ich verwende einen Befehl wie den folgenden:

rsync -alhz --stats --progress --exclude-from '/etc/rsync_backup_excludes.conf' / -e ssh user@10.10.0.1:/path/to/home/

Dies wird rsync benutzen, um nur die benötigten Änderungen zu kopieren, und nicht alles jedes Mal neu zu kopieren, wenn der Befehl ausgeführt wird.

–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/*
2
2
2
2011-08-24 23:57:12 +0000

Mounten Sie /home von einem Computer auf die anderen beiden. Automount funktioniert hierfür recht gut.

2
2
2
2009-08-28 18:41:17 +0000

Werfen Sie einen Blick auf Dropbox http://www.getdropbox.com/ Plattformübergreifend Win / Linux / Mac

1
1
1
2009-08-29 11:11:32 +0000

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

1
1
1
2009-08-29 21:38:15 +0000

Wenn Sie auch Configs synchronisieren wollen - die oben genannten Tools sind völlig hilflos: Configs werden oft geändert, und viele Logfiles erzeugen Konflikte, so dass sie nicht zusammengeführt werden können.
Meine Entscheidung ist einfach, und dumm :) Ich habe eine Master-Workstation, und alle Dateien von “~” werden einfach auf die zweite “Slave”-Workstation 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 ab.

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

export OOHOST=Master

Jetzt wissen die Skripte, welchen Host sie gerade bedienen ;)

1
1
1
2012-03-22 11:47:19 +0000

Versuchen Sie dvcs-autosync .

Dies basiert auf git, nutzt XMPP, um angeschlossene Clients über Dateiänderungen zu informieren und reagiert auf Dateiänderungsereignisse über Inode-Änderungen. Es wird also immer direkt nach der Datei-Änderung informiert, bei Konflikten verlässt es sich auf die bewährten Methoden von git.

Ich benutze es jetzt schon eine Weile als Dropbox-Ersatz über öffentliche SSH-Schlüssel und es macht seine Arbeit wirklich gut.

0
0
0
2011-03-02 14:02:40 +0000

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

  • Dropbox.
    Hauptnachteile: es ist nicht kostenlos für jede vernünftige Datenmenge. Ansonsten funktioniert es IMHO einwandfrei

  • Ein NAS-Server. Legen Sie Ihre Dateien auf einem NAS-Server ab, sie sind in letzter Zeit einigermaßen erschwinglich geworden (ab 150 $ oder so) und ein guter verbraucht nicht viel Energie. Keine Probleme mit der Synchronisation.
    Hauptnachteil: langsamer als eine lokale Kopie

0
0
0
2011-03-02 13:47:07 +0000

Ich benutze SyncTwoFolders für Mac und Syncback für PC - das erste für meine drei Macs zu Hause (inklusive Laptop) und das zweite für meinen PC auf der Arbeit. Beide Programme verfügen über verschiedene Sicherungs- und Synchronisierungsoptionen, die das Ganze zu einem Kinderspiel machen, sobald die Voreinstellungen einmal eingerichtet sind. Einfach-einfach! Ich bin mir sicher, dass es andere Versionen ähnlicher Software für Linux und Ubuntu gibt.

0
0
0
2013-08-18 14:28:59 +0000

Sie könnten ein Sync-Skript wie osync verwenden, das gelöschte Dateien übertragen und nur geänderte aktualisieren kann http://www.netpower.fr/osync osync basiert auf rsync, kann aber viele Sync-Szenarien zwischen lokalen Ordnern oder entfernten Ordnern über ssh verarbeiten.