Dropbox-ähnliche Dateisynchronisierung ohne zentralen Server [geschlossen]

22

Ich suche nach einer Möglichkeit, die sekundären Laufwerke auf meinen beiden Macs über das Internet zu synchronisieren. Ich habe eine konsistente VPN-Verbindung zwischen den beiden Macs und kann auf sie zugreifen, als ob sie direkt nebeneinander sitzen.

Ich suche nach einer Möglichkeit, eine Dropbox-ähnliche Erfahrung zu implementieren. Wenn ich eine Datei auf einem Mac ändere, wird die Datei auf den anderen Mac übertragen (und umgekehrt). Ich brauche auch die Möglichkeit, die Bandbreite zu drosseln (damit unsere kleine 1-Megabit-Upload-Pipe nicht überlastet wird). Irgendwelche Vorschläge?

Oh, und die Verwendung von Dropbox kommt derzeit nicht in Frage, da mein Laufwerk 500 GB groß ist. Vielen Dank!

Muncherelli
quelle
Suchen Sie nach einem Port von "rsync", bei dem es sich um ein Linux-Tool handelt. Es kann Ihre Dateien bei jedem Lauf synchronisieren. dann brauchst du nur eine Möglichkeit, dies auszulösen, wenn sich SG ändert.
dkellner
Möchten Sie, dass alle 500 GB synchronisiert werden?
cubuspl42
5
Dies wäre ein aktuelles Thema in den Software-Empfehlungen. Siehe diese Frage (nicht spezifisch für Mac): softwarerecs.stackexchange.com/questions/129/…
Nicolas Raoul
Brauchst du das auch "Wenn ich die Datei auf einem Computer lösche, sollte sie auch auf dem anderen Computer gelöscht werden, anstatt neu erstellt zu werden."
Patrick M
Ist das nicht was iCloud ist? hints.macworld.com/article.php?story=20120803092156975
Blazemonger

Antworten:

30

Testen Sie Bittorrent Sync . Es hat die Synchronisierungsfunktionalität wie Dropbox, jedoch ohne die Cloud.

Oskar Persson
quelle
Nachteil: Beide Maschinen müssen gleichzeitig online sein, um synchronisieren zu können.
Gerald Schneider
18
@GeraldSchneider Kennen Sie etwas, das diese Einschränkung nicht hat?
Shelvacu
2
@shelvacu, nicht möglich. Wenn Sie möchten, dass es synchronisiert wird, ohne dass beide Computer online sind, benötigen Sie Cloud-Speicher (entgegen der OP-Anforderung).
HalosGhost
5
Nicht unbedingt ein Cloud-Speicher. Sie benötigen einen Knoten, der immer online ist. Dies kann ein Computer, ein NAS, ein Cloud-Dienst, Ihre von Lawrence vorgeschlagene, selbst gehostete OwnCloud-Instanz oder eine ähnliche Lösung sein. Solange Sie jedoch nicht immer einen Knoten online haben, gilt diese Einschränkung immer.
Gerald Schneider
3
Ich verwende BitTorrent Sync und kann es wärmstens empfehlen - ich verwende es in Verbindung mit Dropbox für Dateien, die zu groß sind und es nicht wert sind, dort Speicherplatz zu belegen. Eine Sache zu beachten ist jedoch, dass es nicht gut mit gleichzeitigen Bearbeitungen von Dateien umgehen kann - es gibt keine Konfliktbehandlung wie bei Dropbox - die zuletzt bearbeitete Datei gewinnt einfach. Nicht unbedingt ein Problem, aber es hängt von Ihren Anforderungen ab.
Zelanix
16

Wenn Sie Hardcore spielen möchten, können Sie den Befehl rsync nativ in OsX verwenden , z. B. * nix staff.

Vor allem müssen Sie die Berechtigung haben, mit ssh auf den Remote-Host zuzugreifen. Der OpenSSH-Server ist unter Mac OsX vorinstalliert, und Sie müssen kein zusätzliches Paket installieren. Müssen nur einige Systemeinstellungen vornehmen. Um den OpenSSH-Server unter Mac OS X zu aktivieren, öffnen Sie die Systemeinstellungen und klicken Sie auf Freigabe. Aktivieren Sie anschließend das Kontrollkästchen Remote-Anmeldung, um SSH zu aktivieren, und aktivieren Sie das Optionsfeld Alle Benutzer im Abschnitt Zugriff gewähren für .

Sie können jetzt per ssh auf den Remote-Host zugreifen.

Jetzt müssen Sie einen öffentlichen Zugriffsschlüssel für den kennwortlosen Zugriff vom lokalen Gastcomputer auf den Remote-Host über ssh erstellen. Dafür musst du dir die Hand ein bisschen schmutzig machen. :)

Stellen Sie zunächst fest, ob Sie bereits über Authentifizierungsschlüssel verfügen. Führen Sie im Terminal Folgendes aus:

sudo ls -la /var/root/.ssh

Wenn Sie "id_dsa" und "id_dsa.pub" sehen , können Sie den Rest dieses Abschnitts überspringen.

Führen Sie auf dem Clientcomputer im Terminal Folgendes aus:

sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"

Nachdem Sie den Zugriffsschlüssel auf dem lokalen Gastcomputer erstellt haben, müssen Sie den öffentlichen Schlüssel des Gasts in die Datei authorized_keys des Hosts kopieren. Sie können dies mit einem einfachen Terminal-Befehl tun, der den öffentlichen Schlüssel an die Liste der autorisierten Schlüssel anfügt:

sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'

Mit dem folgenden Befehl wird eine Teilsicherung Ihres Root-Dateisystems auf dem lokalen Gastcomputer auf Ihrem Remote-Host ausgeführt:

/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

Sie können die Parameter von rsync ändern, um das Synchronisationsverhalten zu ändern. Wenn Sie diesen Befehl zu crontab hinzufügen , kann die Synchronisation in beliebigen Zeitzyklen ausgeführt werden. Beispielsweise:

sudo crontab -e

Zeile unten an crontab anhängen:

*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

Dies wird alle halbe Stunde synchronisiert.

Hier ist das Beispiel-Python-Skript:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Cron automated synchronization script.

Desc: Synchronize remote folder into local machine. Duplicate processes 
      are disallowed until running process finished.

Usage:
    :: Change required variables as _user, _password, _domain etc.
    :: Edit crontab 
    # crontab -e

    :: Append line below.
    */30 * * * * python synchronizator.py 2>&1 &

Author: Sencer HAMARAT (RecNes)
E-Mail: [email protected]
"""

import shlex
from subprocess import Popen, PIPE
import logging as log
import sys

__author__ = "Sencer HAMARAT"

_user = 'username'
_password = 'password'
_domain = 'example.com'

_expectation = "Enter passphrase for key \'/home/%s/.ssh/id_rsa\':" % _user
_rsync = '/usr/bin/rsync --partial --progress -avvz -e'
_pub_key = '/home/%s/.ssh/id_rsa.pub' % _user
_ssh = '/usr/bin/ssh -i %s' % _pub_key
_remoteDir = '/home/%s/backup/' % _user
_localDir = '/home/%s/backup/' % _user
_command = '%s %s %s@%s:%s %s' % (_rsync, _ssh, _user, _domain, _remoteDir, _localDir)
run_command = shlex.split(_command)

_logFile = "logfile.log"
_logFormat = "%(asctime)s %(levelname)s %(name)s %(process)d %(threadName)s %(module)s:%(lineno)d %(funcName)s() " \
             "%(message)s\n"
log.basicConfig(filename=_logFile, level=log.DEBUG, format=_logFormat)

log.debug(u'Command will run: %s' % _command)

try:
    running_command = Popen(run_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    if running_command.poll():
        log.debug(repr(running_command.poll()))
        sys.exit()
    if _expectation in running_command.communicate():
        running_command.communicate(_password)
    print running_command.communicate()
except Exception as e:
    log.debug(repr(e))
finally:
    sys.exit()
Sencer H.
quelle
Ich hatte überlegt, Rsync zu verwenden, aber das Problem liegt hier: "Was ist, wenn der Rsync nach 30 Minuten noch nicht vollständig abgeschlossen ist?" Ich möchte nicht, dass zwei Rsyncs gleichzeitig auftreten. Gibt es einen Weg, dies zu umgehen?
Muncherelli
1
@muncherelli: Es ist relativ schmerzlos, einen kleinen "Verriegelungsmechanismus" um den rsync zu schreiben, um gleichzeitige Synchronisierungen zu verhindern. Schließen Sie den rsync-Aufruf in ein Bash-Skript ein, und Sie können alles tun, was Sie möchten.
unperson325680
Ich habe ein Beispielskript hinzugefügt. Ich hoffe es wird helfen.
Sencer H.
Dies ist ein großartiges Skript. Vielen Dank für die Hilfe. Ich habe mich für BitTorrent Sync entschieden, weil es so einfach ist und die Bandbreite gedrosselt wird. (Ich weiß, dass Sie mit rsync die maximale Bandbreitennutzung einstellen können, aber BTS ist viel intuitiver).
Muncherelli
8

Owncloud ist eine mögliche Lösung, wenn Sie einen webbasierten Zugriff wünschen.

Sie benötigen einen eigenen Server, auf dem Owncloud gehostet werden kann. Es handelt sich jedoch eher um eine serverbasierte Lösung, bei der Ihre 2 Clients nach Belieben auf das zugreifen können, was sie benötigen. Es wird jedoch nur eine Kopie der betreffenden Datei auf dem Server vorhanden sein Owncloud Server.

Lawrence
quelle
Ist es immer noch so, dass Sie sich nur mit einer eigenen Cloud verbinden können? ZB kann ich mein eigenes nicht haben und ein anderes mit meinem Bruder teilen?
Thomas Weller
Zumindest die Desktop-Synchronisierungs-Clients unterstützen jetzt mehrere gleichzeitige Cloud-Verbindungen. Aber auch innerhalb eines Servers können Sie nur bestimmte Dateien / Verzeichnisse freigeben, nicht unbedingt alles.
12.
4

Ich bin kürzlich über Syncthing gestolpert. Viele coole Feautures.

http://syncthing.net/

user5522
quelle
2

Unter Windows gibt es ein SyncToy- Tool, das dies in drei Schritten ausführt. Bei einem Mac handelt es sich um das ChronSync- Tool oder das Tri-Backup- Tool

Ruslan Gerasimov
quelle
Hallo Ruslan, können Sie Ihre Antwort bearbeiten, um zu erklären, warum ChronSync oder Tri-Backup die ideale Lösung für das OP sind? Im Moment ist es eine Antwort von sehr geringer Qualität, die das Wie der Frage nicht beantwortet . Danke
Kanadier Luke REINSTATE MONICA
Hallo, danke für deine Frage. Nun, ich sage nicht, dass diese Programme die ideale Lösung sind, aber ich denke, es ist einfach genug, weil sie über eine grafische Benutzeroberfläche verfügen. Das bedeutet auch, dass jeder dies tun kann, ohne die magischen Schreibweisen einiger Befehlszeilen zu verstehen. Auch ich glaube, wenn man ein Problem mit der Verwendung von aufgelisteten Programmen hat, sollte es in einer separaten Frage gestellt werden, wie was er getan hat, was falsch \ seltsam ist. Sie müssen nicht die Dokumentation kopieren, ohne eine bestimmte Frage zu stellen.
Ruslan Gerasimov
2

Betrachten Sie Unison. Es übernimmt die Zwei-Wege-Dateisynchronisation. Sie können es nach einem Zeitplan mit cronoder einer anderen Planungs-App festlegen .

http://www.cis.upenn.edu/~bcpierce/unison/

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

Unison teilt eine Reihe von Funktionen mit Tools wie Konfigurationsverwaltungspaketen (CVS, PRCS, Subversion, BitKeeper usw.), verteilten Dateisystemen (Coda usw.), Dienstprogrammen für unidirektionale Spiegelung (rsync usw.) und anderen Synchronisierern (Intellisync, Reconcile usw.). Es gibt jedoch mehrere Punkte, in denen dies unterschiedlich ist:

Chloe
quelle
1
+1: Wenn bidirektionale Synchronisierung erforderlich ist, gewinnt dies eindeutig über Rsync, während alle seine coolen Funktionen.
13.
1

Ich hatte viel Glück mit GoodSync mit zwei PCs im selben LAN, aber ich wette, es würde in Ihrer Situation immer noch gut funktionieren.

Hier ist ihre Produktbeschreibung:

  • GoodSync synchronisiert Dateien zwischen Ihrem Computer, mobilen Geräten, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV und Azure.
  • GoodSync sichert Dateien auf tragbaren Laufwerken, Mobilgeräten und auf FTP, S3, GDocs, SkyDrive, DAV oder einem anderen Computer.
  • Direkte P2P-Synchronisierung: GoodSync Connect synchronisiert Dateien direkt zwischen Ihren Computern, ohne dass dies durch die Synchronisierung über Server von Drittanbietern langsam wird.
  • GoodSync ist sehr schnell und synchronisiert Dateien auf Ihren Befehl hin, regelmäßig, nach einem Zeitplan oder in Echtzeit (bei Dateiänderung).

Sie müssen GoodSync nur auf einem Ihrer PCs einrichten. Die Synchronisierung erfolgt in beide Richtungen, und die Art der Synchronisierung ist anpassbar. Außerdem wird es von CNet sehr empfohlen.

Jon Onstott
quelle
Hallo Jon, kannst du deine Antwort bearbeiten, um zu erklären, warum GoodSync die ideale Lösung für das OP ist? Im Moment ist es eine Antwort von sehr geringer Qualität, die das Wie der Frage nicht beantwortet . Danke
Kanadier Luke REINSTATE MONICA
1

Eine andere mögliche Lösung ist AeroFS .

AeroFS synchronisiert Daten zwischen Ihren Geräten bidirektional, während Ihre Daten immer nur auf Ihren Geräten gespeichert werden - Ihre Daten gelangen niemals in die Nähe der Server. AeroFS verwaltet einen Revisionsverlauf für Ihre Dateien, sodass Sie bei Bedarf auf frühere Versionen zurückgreifen können, und bietet ein Tool zum Lösen von Konflikten.

AeroFS funktioniert unter Windows, Mac, Linux, iOS und Android.

Chritohnid
quelle
0

Wenn Sie sich also nicht grundsätzlich gegen Cloud Storage aussprechen, gibt es zwei Hardwarelösungen für externe Laufwerke:

Space Monkey verwendet ein interessantes Paradigma. Es ordnet einen Teil Ihrer Festplatte der Speicherung kleiner Teile der Daten anderer zu und speichert Ihre Daten auch auf vielen Laufwerken anderer (natürlich verschlüsselt). Auf diese Weise entsteht im Katastrophenfall eine Menge Redundanz, und Ihre Maschinen müssen nicht in der Lage sein, sich gegenseitig zu sehen oder gleichzeitig verbunden zu sein.

Der Dateitransporter ist etwas einfacher, da die Daten immer nur auf anderen Dateitransporter-Laufwerken synchronisiert werden, die Sie speziell für die Synchronisierung eingerichtet haben.

Beide Optionen eignen sich für große Datenmengen, und Sie kaufen die Hardware nur einmal ohne Abonnementgebühr.

tfinniga
quelle