Frage Lieblings rsync Tipps und Tricks


Je mehr ich benutze rsync Je mehr ich merke, dass es ein Schweizer Taschenmesser der Dateiübertragung ist. Es gibt so viele Möglichkeiten. Ich habe kürzlich herausgefunden, dass du gehen kannst --remove-source-files und es löscht eine Datei aus der Quelle, wenn sie kopiert wurde, was es eher zu einem Zug macht, als ein Programm zu kopieren. :)

Was sind deine Lieblings-Rsync-Tipps und Tricks?


54
2017-07-24 11:21


Ursprung




Antworten:


Versuchen Sie rsync Version 3 zu verwenden, wenn Sie viele Dateien synchronisieren müssen! V3 erstellt seine Dateiliste inkrementell und ist viel schneller und benötigt weniger Speicher als Version 2.

Abhängig von Ihrer Plattform kann dies einen großen Unterschied machen. Unter OSX dauerte Version 2.6.3 mehr als eine Stunde oder stürzte beim Versuch, einen Index von 5 Millionen Dateien zu erstellen, während die kompilierte Version 3.0.2 sofort mit dem Kopieren begann.


17
2017-07-24 16:29



Eine Sache zu beachten ist, dass wenn Sie einige Optionen verwenden (wie --delete-before Zum Beispiel wird das alte "built list first" -Verhalten verwendet, damit diese Optionen korrekt funktionieren. Wenn Sie dieses Verhalten nicht sehen, überprüfen Sie, ob die anderen Optionen, die Sie verwenden, bekannt sind, dass dies nicht möglich ist. Dies kann nützlich sein, wenn Sie rsync interaktiv in einem großen Baum verwenden und den ersten Scan so erzwingen wollen, dass die Ausgabe von --progress ist genau (d. h. der Zählwert "zu vergleichende Objekte" wird niemals steigen, da nach dem anfänglichen Scan keine neuen Objekte gefunden werden). - David Spillett


Verwenden --link-dest Erstellen Sie platzsparende Snapshot-basierte Backups, wobei Sie mehrere vollständige Kopien der gesicherten Daten haben (eine für jeden Backup-Lauf), aber Dateien, die sich nicht zwischen Läufen ändern, sind fest miteinander verbunden, anstatt neue Kopien zu erstellen.

(eigentlich benutze ich immer noch die rysnc-gefolgt von-cp -al Methode, die das gleiche erreicht, siehe http://www.mikerubel.org/computers/rsync_snapshots/ für einen alten, aber immer noch sehr guten Niedergang beider Techniken und verwandter Themen

Der Hauptnachteil dieser Technik ist, dass, wenn eine Datei aufgrund eines Festplattenfehlers beschädigt ist, sie in allen Snapshots, die mit dieser Datei verlinkt sind, genauso korrupt ist, aber ich auch Offline-Backups habe, die davor in angemessenem Umfang schützen würden. Die andere Sache, auf die Sie achten sollten, ist, dass Ihr Dateisystem über genug Inodes verfügt oder dass Ihnen diese ausgehen, bevor Ihnen tatsächlich der Speicherplatz ausgeht (obwohl ich nie ein Problem mit den ext2 / 3-Standardeinstellungen hatte).

Vergessen Sie auch nie das sehr sehr nützliche --dry-run für eine kleine gesunde Paranoia, besonders wenn Sie die --delete* Optionen.


17
2017-07-24 12:26



+1 für --dry-run - David Z
Beachten Sie, dass -n die Abkürzung für --dry-run ist - ctennis
Ich bevorzuge es, bei den langen Namen zu bleiben, besonders in Skripten, die andere am Ende beibehalten können. Es verdeutlicht, was ohne Bezugnahme auf die Dokumente gemeint ist. - David Spillett
+1 Ich implementierte eine Backup-Lösung von vielen TB auf vielen Maschinen mit der --link-dest-Methode für fest verbundene Snapshots wie oben beschrieben - es funktionierte perfekt. - matja
Wenn Sie --link-dest-Backups mögen, sollten Sie es auschecken Dirwisch welches rsync unter der Haube benutzt - hfs


Wenn Sie eine Website mit einigen großen Dateien über einen langsamen Link aktualisieren müssen, können Sie die kleinen Dateien folgendermaßen übertragen:

rsync -a - max-size = 100K / var / www / dort: / var / www /

dann mach das für die großen Dateien:

rsync -a - min-size = 100K - bwlimit = 100 / var / www / dort: / var / www /

rsync hat viele Optionen, die für Websites nützlich sind. Leider gibt es keine eingebaute Möglichkeit, simultane Updates zu erkennen, daher müssen Sie Cron-Skripten Logik hinzufügen, um überlappende Schreibvorgänge von großen Dateien zu vermeiden.


12
2017-08-26 13:05





Ich verwende die Option --existing, wenn ich versuche, eine kleine Teilmenge von Dateien von einem Verzeichnis zu einem anderen zu synchronisieren.


10
2017-07-24 11:32



Vielen Dank! Das hat mich nur vor dem lästigen Schreiben von Filterregeln bewahrt. - benzado


--rsh gehört mir.

Ich habe es verwendet, um die Chiffre auf ssh zu etwas schneller zu ändern (--rsh="ssh -c arcfour") auch eine Kette von sshs (empfehle es mit ssh-agent) um Dateien zwischen Hosts zu synchronisieren, die nicht direkt sprechen können. (rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


8
2017-07-24 17:26





--time-limit

Wenn diese Option verwendet wird, stoppt rsync nach T Minuten und verlassen. Ich denke, dass diese Option nützlich ist, wenn man einen großen Betrag rsyncingt Daten während der Nacht (nicht beschäftigt Stunden), und dann zu stoppen, wenn es ist Zeit für Menschen, das Netzwerk während des Tages zu nutzen (geschäftige Stunden).

--stop-at=y-m-dTh:m

Mit dieser Option können Sie angeben, zu welcher Uhrzeit rsync gestoppt werden soll.

Batch Mode

Der Batch-Modus kann verwendet werden, um den gleichen Satz von Updates auf viele identische Systeme anzuwenden.


7
2018-06-04 23:51



Sinnvoll! Ich hatte zuvor den "at" -Befehl benutzt, um den Prozess zu beenden - Lionel
Quell-Patches: rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; Win32-Binärdatei mit Patch: iteefix.no/i2/cwrsync - jftuga
Leider sind diese Optionen nicht in rsync verfügbar, das mit Redhat / Centos- oder Ubuntu-Distributionen verteilt wird. - IanB
@Lionel: Wie benutzt du? at um den Prozess zu beenden? - IMTheNachoMan


Wenn Sie sich fragen, wie weit ein langsam laufendes rsync gekommen ist, und nicht -v zum Auflisten von Dateien verwendet hat, während sie übertragen werden, können Sie herausfinden, welche Dateien es geöffnet hat:

 ls -l /proc/$(pidof rsync)/fd/*

auf einem System mit / proc

Z.B. Rsync wurde gerade für mich aufgehängt, obwohl das entfernte System noch eine Menge Platz zu haben schien. Dieser Trick half mir, die unerwartet große Datei zu finden, an die ich mich nicht erinnern konnte, die am anderen Ende nicht passen würde.

Es hat mir auch ein bisschen interessantere Informationen erzählt - das andere Ende hat offenbar aufgegeben, da es auch einen kaputten Socket Link gab:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

6
2018-01-09 19:08