Lösung 1:
Versuchen Sie, rsync Version 3 zu verwenden, wenn Sie viele Dateien synchronisieren müssen! V3 baut seine Dateiliste inkrementell auf und ist viel schneller und verbraucht weniger Speicher als Version 2.
Abhängig von Ihrer Plattform kann dies einen großen Unterschied machen. Unter OSX würde Version 2.6.3 mehr als eine Stunde dauern oder abstürzen, wenn man versucht, einen Index von 5 Millionen Dateien zu erstellen, während die von mir kompilierte Version 3.0.2 sofort mit dem Kopieren begann.
Lösung 2:
Mit --link-dest
um platzsparende Snapshot-basierte Backups zu erstellen, wobei Sie anscheinend mehrere vollständige Kopien der gesicherten Daten haben (eine für jeden Backup-Lauf), aber Dateien, die sich zwischen den Läufen nicht ändern, fest verknüpft werden, anstatt neue Kopien zu erstellen, um Platz zu sparen.
(Eigentlich verwende ich immer noch die rysnc
-gefolgt von-cp -al
Methode, die das Gleiche erreicht, siehe http://www.mikerubel.org/computers/rsync_snapshots/ für eine altmodische, aber immer noch sehr gute Übersicht über beide Techniken und verwandte Probleme)
Der einzige große Nachteil dieser Technik ist, dass, wenn eine Datei aufgrund eines Festplattenfehlers beschädigt wird, sie in allen Snapshots, die mit dieser Datei verknüpft sind, genauso beschädigt ist, aber ich habe auch Offline-Backups, die in angemessenem Umfang dagegen schützen würden. Die andere Sache, auf die Sie achten sollten, ist, dass Ihr Dateisystem genügend Inodes hat oder 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 die sehr sehr nützliche --dry-run
für ein wenig gesunde Paranoia, besonders wenn Sie die --delete*
verwenden Optionen.
Lösung 3:
Wenn Sie eine Website mit 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 tun Sie dies 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 praktisch sind. Leider hat es keine eingebaute Möglichkeit, gleichzeitige Updates zu erkennen, also müssen Sie den Cron-Skripten Logik hinzufügen, um überlappende Schreibvorgänge von großen Dateien zu vermeiden.
Lösung 4:
Ich verwende die Option --existing, wenn ich versuche, eine kleine Teilmenge von Dateien von einem Verzeichnis mit einem anderen Ort zu synchronisieren.
Lösung 5:
--time-limit
Wenn diese Option verwendet wird, stoppt rsync nach T Minuten und wird beendet. Ich denke, diese Option ist nützlich, wenn Sie eine große Datenmenge während der Nacht (Nicht-Hauptverkehrszeit) synchronisieren und dann tagsüber (Hauptverkehrszeit) anhalten, wenn es an der Zeit ist, dass Benutzer das Netzwerk nutzen.
--stop-at=y-m-dTh:m
Mit dieser Option können Sie angeben, wann rsync beendet werden soll.
Batch Mode
Der Stapelmodus kann verwendet werden, um denselben Satz von Aktualisierungen auf viele identische Systeme anzuwenden.