Wir haben eine große Anzahl von Dateien auf einem Remote-Server, die ich für zusätzliche Redundanz regelmäßig auf einem lokalen System sichern möchte. Ein paar Details:
- Das Remote-System ist nicht in meiner Kontrolle. Ich habe nur SSH / rsync- oder FTP-Zugang
- Das Remote-System führt rsync 2.6.6 aus und kann nicht aktualisiert werden
- Das Remote-System ermöglicht maximal 25 gleichzeitige Verbindungen und 5 sind für Produktionsanforderungen reserviert (also 20 verfügbar).
- Das Remote-System enthält 2 Millionen Dateien, von denen die meisten 100 bis 200 KB groß sind
- Dateien werden in einer Hierarchie gespeichert
Ähnlich zu:
0123456789/
0123456
abc/
1.fff
2.fff
3.fff
xyz/
9.fff
8.fff
7.fff
9877656578/
5674563
abc/
1.fff
2.fff
3.fff
xyz/
9.fff
8.fff
7.fff
Zehntausende dieser Stammordner enthalten nur einige der internen Ordner- / Dateistrukturen - aber alle Stammordner sind nur numerisch (0-9).
Ich bin rsync -aP
das erste Mal mit einer Straße gefahren und es hat gedauert 3196m20.040s
. Dies ist teilweise auf die Tatsache zurückzuführen, dass rsync
ich die in 3.xx enthaltenen inkrementellen Dateifunktionen nicht verwenden kann , da der Remote-Server auf 2.6.6 läuft. Das Kompilieren der Dateiliste dauert fast 12 Stunden - es werden ungefähr 500 Dateien pro 10 Sekunden ausgeführt. Ich gehe nicht davon aus, dass nachfolgende Läufe so lange dauern werden, da der erste Lauf alles neu herunterladen musste - jedoch sind selbst 12 Stunden nur für die Dateiliste zu lang.
Die Ordnernamen sind wie folgt aufgeteilt:
$ ls | grep "^[^67]" | wc -l
295
$ ls | grep "^6" | wc -l
14167
$ ls | grep "^7" | wc -l
14414
Ich habe das Ausführen getestet, rsync -aWP --delete-during
indem --include="/0*/" --exclude="/*/"
ich es aufgeschlüsselt habe, indem ich 8 davon gleichzeitig mit 0* 1* 2* 3* 4* 5* 8* 9*
und für 6 und 7 ausgeführt habe 60*
- 69*
und 70*-79*
weil die Hauptlast der Ordner in der Hierarchie mit 6
oder beginnt 7
(ungefähr 1400 pro 6?*
oder 7?*
).
Alles , was keine 6 oder 7 ist, dauert insgesamt etwa 5 Minuten. Die 6/7-Verzeichnisse (aufgeschlüsselt in 1/10) dauern jeweils 15 Minuten.
Dies ist ziemlich performant, außer um diesen Job auszuführen, muss ich 28 gleichzeitig ausführen, rsync
und dies sättigt die verfügbare Verbindungsanzahl - ganz zu schweigen von einer möglichen Sättigung des Netzwerks.
Hat jemand eine Empfehlung für eine andere Variante rsync
oder einige zusätzliche Optionen, die ich hinzufügen könnte, um zu verhindern, dass so viele Verbindungen gleichzeitig verwendet werden, ohne dass dies nacheinander in den Grenzen von rsync
2.6.6 an einem Ende erfolgen muss?
Edit # 1: Wir zahlen für die Bandbreite an / von diesem externen Anbieter, sodass wir im Idealfall nur Dinge über das Kabel senden, die gesendet werden müssen, und nicht mehr.