Wie kann ich meinen Home-Ordner über Netzwerk und Internet synchronisieren?

8

Ich benutze meinen Laptop mit Ubuntu-Desktop, um meine ganze Arbeit zu erledigen, aber ich habe auch einen Low-End-Desktop in meinem Büro, der gerade dort sitzt. Ich habe beschlossen, Ubuntu-Server darauf zu installieren und damit meinen gesamten Laptop-Home-Ordner zu spiegeln, um die Formatierung der Festplatte meines Laptops zu vereinfachen.

Immer wenn ich bei der Arbeit bin, sind beide Maschinen mit einem Netzwerk verbunden und kommunizieren einfach (und schnell) über ssh. Wenn ich nicht bei der Arbeit bin, ist der Desktop immer noch über ssh zugänglich. Im Idealfall erfolgt die Synchronisierung automatisch im Hintergrund, wenn ich etwas ändere. Es muss nur eine Möglichkeit sein: Die Änderungen, die ich am Laptop vornehme, müssen mit dem Server synchronisiert werden, aber die Umkehrung ist nicht erforderlich.

Ich weiß, dass es dafür Software gibt. Meine Frage lautet: Mit welcher Software kann ich die oben genannten Ziele erreichen und auch die Geschwindigkeit des lokalen Netzwerks bei der Arbeit voll ausnutzen? Da ich manchmal mit großen Dateien zu tun habe, muss der Synchronisierungsprozess erkennen, dass sich die beiden Computer ein lokales Netzwerk teilen, und dies dann nutzen (anstatt immer über das Internet zu synchronisieren).

Um ganz klar zu sein, die Synchronisierung über das Netzwerk ist mir hier eigentlich wichtiger als die Synchronisierung über das Internet. Im Idealfall würde die Software prüfen, ob die erstere verfügbar ist, und, falls nicht, die letztere ausprobieren. aber wenn das nicht möglich ist, ist der erste Fall meine Priorität.

Hoffe das ist nicht zu lang. Danke im Voraus.

Malabarba
quelle

Antworten:

11

Wenn Sie nur über SSH eine Verbindung zu Ihrem Office-Server herstellen können, verwenden Sie am besten rsync : Es kann SSH als Transportprotokoll verwenden und verwendet einen intelligenten Algorithmus, um die Übertragung großer Dateien zu beschleunigen, indem nur die geänderten Blöcke gesendet werden.

Da Sie nur eine Einweg-Synchronisierung benötigen, richten Sie einfach die kennwortlose SSH-Authentifizierung von Ihrem Laptop zum Office-Server ein. Dann können Sie mit einem Befehl beginnen, der so einfach ist wie:

rsync -e ssh -a $HOME/ myuser@officeserv:

Hinzufügen --includeund --excludeOptionen zum Verfeinern der Liste der Dateien / Verzeichnisse, die Sie synchronisieren möchten. Das Übertragen von Programmeinstellungen ("Punktdateien") kann beispielsweise riskant sein, wenn auf beiden Computern nicht dasselbe Betriebssystem (dieselbe Version) ausgeführt wird. Mein Vorschlag ist, zunächst alle "Punktedateien" auszuschließen (also verwenden --exclude="$HOME/.[a-z]*") und dann selektiv die Konfigurationsverzeichnisse von Programmen hinzuzufügen, die sicher gemeinsam genutzt werden können (dies muss programmweise gesehen werden). Außerdem kann der Webbrowser zwischengespeichert und $HOME/.cachejederzeit ausgeschlossen werden. Im Abschnitt "FILTERREGELN" in der rsyncManpage finden Sie eine ausführliche Beschreibung der Syntax von Einschluss- / Ausschlussregeln.

Da es rsyncjedoch keinen "Dauerbetrieb" -Modus gibt, müssen Sie ihn regelmäßig von Ihrem Crontab aus ausführen .

Riccardo Murri
quelle
Das klingt gut. Ich werde es testen, sobald ich den Server installiert habe. Eine Frage: Verwendet das SSH-Protokoll automatisch die kürzeste Verbindung zum Server? Ich meine: Wird eine Verbindung über das lokale Netzwerk hergestellt, wenn sich sowohl der Client als auch der Server im Büronetzwerk befinden, oder wird immer versucht, eine Internetverbindung herzustellen?
Malabarba
Übrigens, Sie haben Recht mit dem Browser-Cache. Irgendwelche anderen Vorschläge für Ordner, die ich ausschließen sollte? Mein Ziel ist es, alle persönlichen Dateien, Profile, Einstellungen und Konfigurationsdateien zu synchronisieren.
Malabarba
1
@ Bruce Connor: SSH stellt mithilfe des üblichen IP-Routing-Algorithmus eine Verbindung zu einem Remote-Host her. Aktualisierter Antworttext mit Vorschlag für eine erste Ausschlussliste.
Riccardo Murri
Vielen Dank. Um Konflikte zu vermeiden, synchronisiere ich möglicherweise den Basisordner meines Laptops mit einem Unterordner auf dem Server (und nicht mit dem eigentlichen Basisordner des Servers).
Malabarba
@riccardomurri mit "kennwortlose SSH-Authentifizierung" meinen Sie keyfile-based? oder etwas anderes?
David.Libremone
3

Ich würde vorschlagen, rdiff-backup über rsync zu verwenden. Es ist so ziemlich nur rsync ++.

Im Gegensatz zu rsync, bei dem es sich nur um einen 1-1-Spiegel handelt, der Unterschiede überträgt, verfügt rsync über einen Verlaufsmechanismus. Wenn Sie also etwas Wichtiges vermasselt und gelöscht haben, können Sie auf eine Woche zurückgreifen und es zurückerhalten.

Auf dem Ubuntu "Server" muss nur ssh ausgeführt werden, um apt-get install rdiff-backup zu installieren.

auf dem Client. Ich würde dies entweder manuell ausführen .. oder über eine Crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Wenn Sie Ihren Port 22 für das Internet öffnen, sollten Sie in der Lage sein, dasselbe Skript in beiden Fällen auszuführen. Lassen Sie einfach Ihren Hostnamen lokal in Ihre lokale IP auflösen.

dh. backupSrv.penguins.org würde in die externe IP von aufgelöst. 2.3.4.5 aber in Ihrem LAN: bis 192.168.1.253

csgeek
quelle
Ich denke, Ihrem Skript fehlen einige Zeilenumbrüche.
Malabarba
2

Es gibt keine vollständige, vorgefertigte Lösung für Ihr mir bekanntes Problem. Dafür müssen Sie wahrscheinlich selbst ein kleines Skript schreiben.

Die Synchronisierung selbst könnte erfolgen rsync, wie bereits von Riccardo Murri erklärt. Rsync überträgt nur die geänderten Teile von Dateien, daher ist es perfekt für diese Aufgabe.

Mit dem NetworkManagerDispatcher können Sie Skripts beim Verbinden / Trennen einer Netzwerkschnittstelle ausführen. Sie können also ein Skript schreiben, das überprüft, ob Sie sich im richtigen Netzwerk befinden, und dann rsync aufruft. Auf diese Weise werden Ihre Daten automatisch synchronisiert, wenn Sie eine Verbindung zu Ihrem Unternehmensnetzwerk herstellen.

Um Ihre Daten regelmäßig zu synchronisieren, können Sie, wie bereits erwähnt, cron verwenden.

Sie sollten auch die Sicherheit berücksichtigen, wenn Sie rsync über ssh verwenden. Für die Synchronisierung ohne Benutzereingriff benötigen Sie eine kennwortlose Schlüsseldatei. Jeder, der über diese Schlüsseldatei verfügt, kann auf den Server zugreifen, zu dem er gehört. Ich würde dringend empfehlen, Ihren Home-Ordner zu verschlüsseln, um die Daten auf dem Notebook und auf dem Server zu schützen.

Verrückter Wissenschaftler
quelle
1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox sollte in Ihrem Fall gut sein, funktioniert unter Linux, Mac, Windows, einfache Einrichtung und Verwaltung.

Laden Sie DropBox herunter

/superuser/147315/dropbox-to-sync-nix-home-folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Lesen Sie es durch - es unterstützt die Synchronisierung über Symlinks und wenn bestimmte Dokumente, Grafiken und Tabellen synchronisiert werden müssen - können Sie dennoch eine Kopie davon in der Dropbox aufbewahren oder sie dauerhaft in der Dropbox speichern, um den Aufwand zu sparen.

Rihatum
quelle
Ich glaube nicht, dass Sie Ihre Dropbox als Ihren Home-Ordner festlegen können (zumindest noch nicht).
Matthew
superuser.com/questions/147315/dropbox-to-sync-nix-home-folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Haben Sie einen Lese durch - es unterstützt die Synchronisierung über Symlinks und wenn es bestimmte doc, Grafiken, Tabellen Sie müssen synchronisiert werden - Sie können weiterhin eine Kopie davon in der Dropbox aufbewahren oder sie dauerhaft in der Dropbox speichern, um den Ärger zu sparen.
Rihatum
1
Danke, aber ich verwende bereits plattformübergreifende Dropbox. Was ich hier suche, ist etwas, mit dem ich viele GB Dateien ohne Gebühren synchronisieren und lokale Netzwerke nutzen kann.
Malabarba
1

Probieren Sie Sparkleshare aus: http://sparkleshare.org/

Es gibt einen Client im Ubuntu-Repo, der Anweisungen zum Einrichten eines Servers auf seiner Website enthält.

user60876
quelle
sieht aus wie ein großartiges Programm - die am wenigsten hackige Lösung; Version 1.0 wurde letzten Monat veröffentlicht.
Abe
0

Die beste Lösung für 2015 sollte Seafile sein: https://www.seafile.com/de/download/

Sparkleshare-Entwickler sagen, dass ihr Tool für viele kleine und insbesondere Textdateien gut ist, aber nicht so gut für größere und binäre Dateien.

In Bezug auf die Leistung übertrifft es sowohl Sparkleshare als auch Owncloud.

Darüber hinaus ist es weitaus weniger ressourcenhungrig als OwnCloud - so kann eine Instanz problemlos auf einer Banane oder Himbeere als rund um die Uhr laufender Computer ausgeführt werden. (Ich würde einen Banana Pi empfehlen, da er aufgrund des Gigabit-Netzwerks und der SATA-Schnittstelle zumindest für mich eine gute Wahl für einen Dateiserver war.)

Ich synchronisiere meine Home-Ordner mit drei Computern. Ich schließe Dotfiles aus, sie werden über ein Git-Repo und eine gewisse Logik behandelt, da es - wie Ricardo erwähnte - einige Probleme gibt, Dotfiles und andere Konfigurationen über verschiedene Computer hinweg zu teilen, selbst wenn es sich um dasselbe Betriebssystem und dieselbe Version handelt. Denken Sie beispielsweise an die Datei monitors.xml oder an ein anderes Layout für eine IDE auf Ihrem Laptop und Ihrem Multiscreen-Desktop - oder an ein Programm, das auf beiden Computern geöffnet ist.

Zusätzlich zur Synchronisierung sichere ich diese Daten - über Borgbackup. Es ist ein sehr schönes neues Backup-Programm, das dedupliziert, sehr schnell nach dem ersten Backup ist und viele Funktionen hat, die vielen Tools fehlen.

Es ist das perfekte Setup für mich.

Mitgefühl
quelle