Remote-Ordner unter Linux synchronisieren

12712
Lakshman Prasad

Was ist der einfachste Weg zur unidirektionalen inkrementellen Synchronisierung eines auf einem Linux-System vorhandenen Ordners?

+1 für die Verwendung der Befehlszeile. +2 für die Verwendung von rsync (Scheint auf meinem System einige Probleme zu haben.)

4
Was genau sind deine Probleme mit rsync? innaM vor 14 Jahren 3
Da "rsync" sehr wahrscheinlich die einfachste Antwort ist, erklären Sie, welche Probleme Sie damit haben. (Die Probleme können sich ohnehin auf jede andere Lösung auswirken.) Telemachus vor 14 Jahren 5

4 Antworten auf die Frage

7
hayalci

Ich denke, Sie sollten Ihre Probleme mit rsync lösen, das ist das bewährte "Syncronization Tool" für Unixes.

rsync -uav --delete /loal/path example.com:/remote/path 

Hinweis: Für die bidirektionale Synchronisierung können Sie verwenden unisono sowie csync .

+1, aber das war nur eine teilweise Antwort für mich. Wenn Sie `rsync` über ssh verwenden müssen, verwenden Sie` rsync -uav --delete -e ssh remoteuser @ remotehost: / remote / dir / this / dir / ` zelanix vor 9 Jahren 0
7
Robert Munteanu

csync ist ein Dateisynchronisierer, der speziell für Sie als normale Benutzer entwickelt wurde.

csync ist eine Library und liefert standardmäßig einen Befehlszeilenclient. Es ist ohne Server und ermöglicht die Synchronisierung über sftpoder samba.

Anwendungsbeispiele:

csync /home/csync smb://csync:secret@rupert.galaxy.site/Users/csync csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync 
Der Befehl `csync` wird vom ubuntu-Paket` csync-owncloud` bereitgestellt. (`sudo apt-get install csync-owncloud`` libcsync-plugin-sftp libcsync-plugin-smb` (falls Sie dies möchten) ThorSummoner vor 8 Jahren 0
Dies führt also eine einmalige Synchronisation auf Anforderung durch. Ich habe keine Informationen gefunden, wie Sie dies zum Überwachen und kontinuierlichen Synchronisieren eines Verzeichnisses verwenden können. ThorSummoner vor 8 Jahren 0
2
nik

So würde ich eine unidirektionale Synchronisierung mit bloßen Werkzeugen durchführen.

Zu Beginn tarieren Sie den gesamten Dateisatz und kopieren Sie sie an den Zielpunkt.
Richten Sie auch eine Markierung im Basisverzeichnis ein.

touch /Source/base/directory/last-sync-time.txt 

Jetzt möchten wir weiterhin von Quelle zu Ziel synchronisieren.

Beim nächsten Zeitfenster für die Synchronisierung vorwärts (von Quelle zu Ziel)

# The backup script cd /Source/base/directory tar cfj -N ./last-sync-time.txt backup.tar.bz2 . scp backup.tar.bz2 user@backup-server:/Backup/Directory/ touch /Source/base/directory/last-sync-time.txt rm -f backup.tar.bz2 
  1. Die -N ./filenameAnweisung tar soll nur Dateien archivieren, die geändert oder erstellt wurden, nachdem sie filenamegeändert / erstellt wurden.
    • Die Verwendung einer lokalen Referenz für die Zeit bestätigt, dass Sie keinen Fehler machen. Wenn aus irgendeinem Grund kein Backup erstellt wurde, wird das nächste Backup es ansammeln
    • Sie können dieses Skript als Cronjob- Eintrag auf dem Quellcomputer einrichten
    • Ich gehe davon aus, dass Sie die Authentifizierungscp mit öffentlichen Schlüsseln verwenden werden
    • Vorausgesetzt, Sie können das backup-serverimmer dann erreichen, wenn dieses Skript ausgegeben wird.
    • Um sicherer zu sein, können Sie Überprüfungen hinzufügen, um zu bestätigen, dass die Sicherung gespeichert wurde, und geben Sie dann den touchBefehl aus
    • Sie können auch Befehle einfügen, um die Backups zu erweitern, die sie am Zielpunkt vor den vorherigen Backups überlagern. Oder führen Sie inkrementelle tar.bz2Archive.
0
umetnic

I Verwenden Sie dieses kurze Skript zum Überwachen und kontinuierlichen Synchronisieren eines Verzeichnisses mit dem Remote-SFTP-Ordner.

#!/bin/sh dir1=/home/user/folder while inotifywait -qqre modify "$dir1"; do csync /home/user/folder sftp://remoteuser:remotepass@remoteaddress:remoteport/remotefolderpath done