rsync: Große Ausschlussliste, die 10 Stunden für die Synchronisierung hinzufügt

2

Ich habe ein rsync-Sicherungsskript auf einer Centos 6-Box ausgeführt, die ~ 410 GB Daten von einem lokalen (LAN-) Server über eine Gigabit-Verbindung synchronisiert hat. Dieses Skript wird stündlich ausgeführt. Wenn keine neuen Dateien kopiert werden müssen, dauert der Vorgang in der Regel etwa 20 Minuten.

Ich habe ein Bereinigungsskript implementiert, das auf der Centos-Box ausgeführt wird und alle Dateien aus der lokalen Sicherungskopie löscht, die älter als 1 Jahr sind (nach einigen Überprüfungen), und diese Dateien einer Ausschlussliste hinzufügt, damit rsync sie analysiert. Alles funktioniert, aber es dauert ungefähr 10 Stunden (ohne neue Dateien). Nach der ersten Bereinigung sind die Quelldaten jetzt ungefähr 80 GB groß und die Ausschlussliste ist ungefähr 90 MB groß.

Hier ist meine Rsync-Zeile aus dem Skript:

rsync -pad $wholefiles  --exclude-from=${exclfile}.combined /mnt/${smbdir}/${drive}/${foldername} /backup/rob/${smbdir}/${drive} >> /var/log/rob/robso.log 2>&1

Hat rsync (oder bash) Größenbeschränkungen für Dateilisten? Kannst du irgendetwas in meiner Syntax sehen, das so viel Verarbeitungszeit verursachen würde? Danke im Voraus.

BEARBEITEN: Die Variable $ wholefiles in der Zeile rsync übergibt in diesem Fall die Option --whole-file.

Kiwisan
quelle
Haben Sie den Cron-Job vor dem Testen deaktiviert? Überprüfen Sie, ob im Hintergrund mehrere rsync-Prozesse ausgeführt werden. Überprüfen Sie Ihr netIO.
Kaurin
Danke, aber ja, ich habe @Kaurin. Ich habe auch gelesen, dass rsync 3.0+ bei großen Dateinummern eine bessere Geschwindigkeit bietet, also habe ich ein Upgrade von 2.68 -> 3.06 durchgeführt. Lief letzte Nacht und es ist nicht schneller.
Kiwisan
Wie montierst du Samba? Sicherung = schlecht, Cifs = gut. Die Sicherung hat eine schreckliche Leistung.
Kaurin
1
Ich hatte ein Problem mit langen Rsync-Verzögerungen bei sehr großen Ordnerstrukturen (100k-Ordner, 1mil-Dateien). Das Einrichten von unisono für eine Synchronisierung in eine Richtung über ssh erfolgt in Sekundenschnelle ohne Aktualisierungen. Das Problem für mich war, dass rsync die gesamte Dateiliste über das Netzwerk sendet, unabhängig davon, ob sich eine Datei geändert hat. Unison sendet nur die Liste der geänderten Dateien.
Clayton Stanley

Antworten:

0

Ich würde das umdrehen. Anstatt rsynceine große Anzahl von Dateien auszuschließen, würde ich diese Dateien nicht zur rsyncPrüfung geben.

cd "/mnt/${smbdir}/${drive}/${foldername}" &&
    find . -maxdepth 1 -mtime -366 -type f -print0 |
    rsync -a0 --files-from=- . "/backup/rob/${smbdir}/${drive}" >> /var/log/rob/robso.log 2>&1

Ich bin mir nicht ganz sicher, ob es durch die Angabe von rsync -d( --dirs) keine Rekursion geben soll. Wenn ich das falsch verstanden habe, dann entferne die -maxdepth 1.

Die --whole-fileOption ist irrelevant, da sie hier immer verwendet wird, da rsyncsie zwischen zwei Teilen desselben "lokalen" Dateisystems kopiert. (Ja, dies bedeutet, dass der Delta-Algorithmus deaktiviert ist.)

Möglicherweise möchten Sie die Zeitspanne für den betreffenden Dateisatz verkürzen find. Hier habe ich festgelegt, dass nur Dateien berücksichtigt werden, die in den letzten 366 Tagen geändert wurden, da Sie das Ausschließen von Dateien erwähnt haben, die älter als ein Jahr sind.

Roaima
quelle