Ich habe drei Computer zu Hause und möchte, dass der /home/
Ordnerbaum zwischen den drei synchronisiert wird.
Alle Dateien / Ordner (mit Ausnahme der ausgeblendeten), die auf einem der drei Computer geändert, hinzugefügt oder entfernt wurden, werden auf den beiden anderen Computern aktualisiert.
Ist rsync
genug , dies zu tun? und wie?
Antworten:
Hier ist eine Liste von Dingen, die dieses Problem möglicherweise lösen könnten. Jede dieser Dingen gleicht 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 schöne Benutzeroberfläche, mit der Sie mit den fast unvermeidlichen Konflikten umgehen und Löschvorgänge 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, aber der Server ist unter Ihrer Kontrolle. Bearbeiten: OwnCloud hat in letzter Zeit einige Änderungen an der Ausführung des Projekts vorgenommen und verfügt nun unter dem Deckmantel von NextCloud über eine neue Open-Source- Version (dh keine Closed-Source-Enterprise-Edition) (siehe dieses Youtube-Interview mit dem ursprünglichen OwnCloud-Entwickler) für mehr 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 git ähnliches Datenmodell zum Nachverfolgen von Änderungen. Bietet Synchronisierungsclients für Desktops, Tablets und Smartphones. Ein Blog-Beitrag, der das Setup beschreibt, ist unter http://openswitch.org/blog/2013/07/18/installing-and-configuring-seafile-on-ubuntu-12-dot-04/ zu finden.
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 von der Website)
PowerFolder - Java-basiertes GPL v2-Projekt. Die Hauptwebsite pusht kommerzielle Angebote, sodass nicht klar ist, wie die bereitgestellte JAR-Datei verwendet werden soll.
Rsync - schnell und effektiv und schon seit Jahrzehnten im Einsatz. 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. Bearbeiten Sie diese Antwort mit besseren Informationen / echten Erfahrungen.
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 - Synchronisierung 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 Auswirkungen dies auf die Sicherheit 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 nicht 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 zu erfahren, was passieren kann, wenn Sie sozusagen alle Ihre digitalen Eier in einen digitalen Korb legen.
Ich empfehle , den gesamten Home - Ordner nicht synchronisiert, sondern bestimmte Ordner Kommissionierung zu synchronisieren wie
Documents/
,Pictures/
usw. Dies wird den Schmerz mit der Geschwindigkeit / Leistung / Speicherplatzprobleme automatisch synchronisieren alles zu tun gezwungen entgehen. 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:
hacken / alle /
quelle
Unison könnte ein guter Kandidat sein:
Es werden bereits 2-Wege-Synchronisierungen durchgeführt. Siehe Update unten.
Ich habe erfahren, 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 auftaucht.
Update: Ja, Unison kann mehr als 2 Computer synchronisieren. Aus ihrer Bedienungsanleitung :
quelle
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, zu Git zu konvertieren, da es für diese Art von Job 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 einen Zweig für diesen Computer benötigen (und in git erhalten Sie diesen standardmäßig). Sie müssen also nicht auf allen Computern genau die gleichen Dateien haben, sie müssen nur ähnlich sein und einen gemeinsamen "Haupt" -Zweig mit den gewünschten Inhalten auf allen verschiedenen Computern haben.
quelle
Das Hauptproblem bei diesem Versuch ist die Entscheidung, 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 abzumelden, um "Änderungen zu übertragen" ... 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 magisch 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.
quelle
Ich denke, Sie können das, was Sie wollen, besser erreichen, indem Sie mit NFS einen gemeinsamen Home-Ordner bereitstellen. Lesen Sie diesen Artikel unter http://www.linuxjournal.com/article/4880
quelle
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:
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:
quelle
Schauen Sie sich lsyncd an
quelle
Werfen Sie einen Blick auf dropbox http://www.getdropbox.com/ Plattformübergreifendes Win / Linux / Mac
quelle
Mounten Sie
/home
von einem Computer zu den beiden anderen. Automount funktioniert dafür ziemlich gut.quelle
Ubuntu One könnte das sein, wonach Sie suchen. Leider befindet es sich noch in der Beta-Phase und ich habe keine Erfahrung damit, daher bin ich mir nicht sicher, ob es für Sie funktionieren würde.
quelle
Wenn Sie auch Konfigurationsdateien synchronisieren möchten, sind die oben genannten Tools völlig hilflos: Konfigurationsdateien werden häufig geändert, und viele Protokolldateien verursachen Konflikte, 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 ab.
Außerdem sollten einige Bash-Skripte auf diesen Rechnern anders laufen, deshalb habe ich meine /etc/bash.bashrc bearbeitet:
Jetzt wissen Skripte, welchen Host sie bedienen;)
quelle
Versuchen Sie es mit 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.
quelle
PowerFolder - Synchronisieren von Dateien, Synchronisierungsordnern, Remotespeicher , Sicherung und Freigabe 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.
quelle
Die Problemumgehungen, die ich berücksichtigen würde:
Dropbox.
Hauptnachteile: Es ist nicht kostenlos für eine angemessene Datenmenge. Ansonsten funktioniert es meiner Meinung nach einwandfrei
Ein NAS-Server. Speichern Sie Ihre Dateien auf einem NAS-Server. In letzter Zeit wurden sie einigermaßen erschwinglich (ab etwa 150 US-Dollar), und ein guter Server verbraucht nicht viel Energie. Keine Synchronisierungsprobleme.
Hauptnachteil: langsamer als eine lokale Kopie
quelle
Ich verwende SyncTwoFolders für Mac und Syncback für PC - das erste für meine drei Macs zu Hause (einschließlich Laptop) und das zweite 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.
quelle
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.
quelle