Was ist eine einfache Möglichkeit, Inhalte auf meinem lokalen Computer mit den Inhalten auf einem Remote-Server unter Verwendung des Terminals/Unix zu synchronisieren?

Kurz gesagt , ich wollte, dass ein lokaler Ordner mit einem Ordner auf einem Remote-Server synchronisiert wird.

Die lange Geschichte:

Ich habe einen Ordner namens, masterin dem ich eine Reihe von Daten speichere. Diese Daten sind in Ordnern organisiert, die die eigentlichen Text-/json-Dateien enthalten. Angenommen , masterenthält Ordner mit den Namen folder1, folder2, usw. Was passiert, ist, dass es mastermit neuen Daten aktualisiert wird, die in folderifür den ithOrdner enthalten sind. Diese neuen Ordner können jederzeit hinzugefügt werden. Ich könnte manuell scp(wie ich es getan habe) alle Daten an meinen Computer senden. Es ist jedoch äußerst mühsam, dies zu tun. Idealerweise möchte ich in der Lage sein, so etwas zu verwenden, gitwo das Programm von selbst figuriertheraus, was tatsächlich aktualisiert werden muss. Der Haken an Git ist, dass es Dinge in der Cloud und in Versionskontrollen speichert. Ich bin nicht (völlig) dagegen, Dinge in der Cloud zu speichern, aber eine Versionskontrolle ist nicht erforderlich, aber idealerweise sende ich nur Daten an mich selbst (leider legt Github Kontingente für das Speichern von Daten fest, sodass ich das nicht verwenden kann).

Ich habe verwendet scp -r user@loc:/loc/master ., um alle meine Daten zu senden, aber es scheint, dass es nicht wirklich überprüft, welche Daten ich bereits habe, und einfach weitermacht und alles erneut sendet. Dies ist sehr zeitaufwändig, da der Algorithmus in der Reihenfolge der Hinzufügungen ausgeführt werden sollte und nicht in der Geschichte des Inhalts von master. Hat jemand eine Software/ein Tool/eine Bibliothek usw., die auf dem Terminal problemlos funktionieren kann, um mein materVerzeichnis zu aktualisieren? Die Ideenanforderungen sind:

  1. Aktualisiert den Haupt- (oder master)-Ordner pro Aktualisierung/Änderung im Ordner und nicht im gesamten Verlauf oder allen Inhalten.
  2. Ich muss nicht jeden Ordner manuell angeben, nur den masterOrdner und es wird nur gesendet, was aktualisiert werden muss (im Wesentlichen wie Git, aber ohne Versionskontrolle).

Idealerweise würde es die Synchronisierung nahtlos mit der Remote-Datei durchführen.


Ich habe darüber nachgedacht, die Dropbox meiner Institution zu verwenden, was im Wesentlichen bedeutet, dass ich etwas Speicherplatz benötige, aber ich bin mir nicht 100% sicher, wie ich eine solche automatische Synchronisierung mit Dropbox nur über das Terminal einrichten kann.

Ich bin mir nicht sicher, ob dies ein Problem sein wird, aber einige dieser Dateien/Daten werden von Skripten generiert. Ich bin mir nicht sicher, ob Dropbox das tun wird, aber wenn es mitten in der Ausführung meiner Dateien ausflippt, weil es versucht zu synchronisieren, wäre das super ärgerlich (oder wenn es beschließt, Zusammenführungskonflikte während der Ausführung zu deklarieren, wäre das auch wirklich ärgerlich). Aus diesen Gründen war ich mir nicht sicher, ob es eine schlechte Idee wäre, Dropbox zu verwenden, aber es könnte tatsächlich in Ordnung sein, wenn es sich nicht zu seltsam verhält. Wenn es nahtlos synchronisiert, ist das cool, aber wenn ich nur gelegentlich angeben muss (nur jedes Mal, wenn sich der Inhalt von ändertmaster), dass es wegen eines neuen Ordners aktualisiert werden muss, das ist auch cool. Ich mache mir nur Sorgen über ein seltsames Synchronisierungsproblem, das auftreten könnte, wenn die Datei tatsächlich geschrieben wird ... vielleicht kann Dropbox dies tun, ich weiß jedoch nicht, wie.


Das System sollte für Unix-Dateisysteme funktionieren. Im Wesentlichen verwende ich lokal OS X und aus der Ferne eine Art Linux.

Antworten (1)

Ich empfehle lsyncd für diesen Zweck. Es überwacht Ihr lokales Verzeichnis auf neue Dateien und verwendet rsynces dann, um Daten an ein Ziel zu übertragen. rsyncführt eine inkrementelle Sicherung durch, was bedeutet, dass nur Dateien übertragen werden, die sich zwischen Quelle und Ziel geändert haben. Es kann im Hintergrund im Daemon-Modus arbeiten. Ich verwende es täglich, um ein lokales Verzeichnis mit einem Remote-Server wie diesem zu synchronisieren, und es funktioniert hervorragend:

$ lsyncd -rsync /media/data/music /mnt/r/music

Ich benutze es nur, Linuxaber es unterstützt auch MacOS.