Ich führe rsync aus, um ein Verzeichnis auf meine externe USB-Festplatte zu synchronisieren. Es sind ungefähr 150 Datenmengen. Über 50000 Dateien, würde ich raten.
Derzeit wird die erste Synchronisierung ausgeführt, das Kopieren von Dateien erfolgt jedoch nur mit einer Geschwindigkeit von 1 bis 5 MB / s. Das scheint für ein USB 2.0-Gehäuse unglaublich langsam zu sein. Es finden auch keine anderen Übertragungen auf dem Laufwerk statt.
Hier sind die Optionen, die ich verwendet habe:
rsync -avz --progress /mysourcefolder /mytargetfolder
Ich verwende Ubuntu Server 9.10.
usb
ubuntu-9.10
usb-flash-drive
rsync
Jake Wilson
quelle
quelle
tar
Befehlen oder vorgeschlagencpio
.Antworten:
Für die erste Synchronisierung verwenden Sie einfach
rsync fügt nur Overhead hinzu, wenn das Ziel leer ist.
auch .. die Option -z kann Ihre Leistung beeinträchtigen. Sie sollten sie nicht verwenden, wenn Sie keine Daten über eine langsame Verbindung übertragen.
quelle
rsync -avz --progress /mysourcefolder/ /mytargetfolder
oder Sie erhalten eine Kopie vonmysourcefolder
inside ofmytargetfolder
anstatt den Inhalt zu spiegelnWenn Sie rsync mit einem schnellen Netzwerk oder einer Festplatte auf derselben Maschine verwenden,
ohne Komprimierung -z
und mit --inplace
beschleunigt es auf die Leistung der Festplatten oder des Netzwerks
Komprimierung verbraucht viel CPU
Wenn Sie Inplace nicht verwenden, wird der Festplatten-Thrash sehr häufig (es wird eine temporäre Datei verwendet, bevor das Finale erstellt wird).
Komprimierung und Nichtverwendung von Inplace ist besser für die Ausführung über das Internet (langsames Netzwerk).
NEU: Achten Sie auf das Ziel ... wenn NTFS "Komprimierung" aktiviert ist ... verlangsamt dies stark große Dateien (ich würde sagen 200MB +).
quelle
Verwenden Sie die
-W
Option. Dies deaktiviert Delta / Diff-Vergleiche. Wenn sich die Dateizeiten / -größen unterscheiden, kopiert rsync die gesamte Datei.Entfernen Sie auch die
-z
Option. Dies ist nur zum Komprimieren des Netzwerkverkehrs nützlich.Jetzt
rsync
sollte so schnell wie möglich seincp
.quelle
-z
Ist nur für langsamen Netzwerkverkehr nützlich . Wenn Ihr Netzwerk schnell genug ist, wird es langsamer, da Sie durch die CPU begrenzt sind.-W
: "Dies ist die Standardeinstellung, wenn sowohl die Quelle als auch das Ziel als lokale Pfade angegeben sind, aber nur, wenn keine Batch-Schreiboption aktiviert ist."Erstens wird die Anzahl der Dateien in diesem Fall ein wichtiger Faktor sein. Die durchschnittliche Größe beträgt jeweils 3 MB. Es gibt wahrscheinlich einen Engpass, der die Geschwindigkeit im OP-Fall beeinflusst. Mehr hier - das ist eine ziemlich trockene Lektüre, aber das Titelbild ist es wert.
Verwenden Sie also rsync, um in ein leeres Verzeichnis zu kopieren? Hier sind einige Möglichkeiten, um es zu beschleunigen:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- die erste> druckt im Grunde genommen eine Datei mit allem, was Sie normalerweise sehen würden, und die zweite> verweist auf Fehlermeldungen.Mein Befehl wäre:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Wenn alles gut aussähe, würde ich "--dry-run" löschen und loslassen. A, X und E decken erweiterte Attribute und Berechtigungen ab, die nicht von -a abgedeckt werden. L steht für weiche Links, H steht für harte Links und h steht für vom Menschen lesbare.
Das Aktualisieren eines bereits synchronisierten Verzeichnisses auf einem USB-Laufwerk oder demselben Laufwerk oder über ein Netzwerk erfordert unterschiedliche rsync-Befehle, um die Übertragungsgeschwindigkeit zu maximieren.
Bonus - hier ist die rsync-Manpage , und wenn Sie die Geschwindigkeit Ihrer Festplatte testen möchten, ist Bonnie ++ eine gute Option, und für Ihre Netzwerkgeschwindigkeit versuchen Sie es mit iperf .
* Der Beitrag ist fast zehn Jahre alt, aber Suchmaschinen mögen ihn auf jeden Fall, und ich sehe ihn immer wieder. Es ist eine gute Frage, und ich denke nicht, dass die beste Antwort auf die Frage, wie Sie rsync beschleunigen können, "Verwenden Sie stattdessen cp" sein sollte.
quelle
Sie sagen nicht, welche Größenverteilung Ihre Dateien haben. Wenn es viele kleine Dateien gibt, verringert dies die Gesamtübertragungsrate, indem die Latenz der Kopfbewegung sowohl auf dem Quell- als auch auf dem Ziellaufwerk erhöht wird, wenn das Tool neue Dateien öffnet und das Betriebssystem Verzeichniseinträge und andere Metadaten (z. B. das Journal des Dateisystems, wenn Sie verwenden) aufbewahrt Metadatenjournale wie ext3 / ext4 und NTFS sind während der Übertragung standardmäßig auf dem neuesten Stand. Ein Dateikopiervorgang wird für größere Objekte nur dann "in den Griff bekommen", wenn eine einfache Massenübertragung stattfindet.
quelle
Sie möchten rclone auf jeden Fall ausprobieren. Dieses Ding ist schnell verrückt:
$ tree / usr [...] 26105 Verzeichnisse, 293208 Dateien
$ sudo rclone sync / usr / home / fred / temp -P -L --transfers 64
Übertragen: 17.929G / 17.929 GByte, 100%, 165.692 MByte / s, ETA 0s Fehler: 75 (Wiederholung kann helfen) Überprüfungen: 691078/691078, 100% Übertragen: 345539/345539, 100% Verstrichene Zeit: 1m50.8s
Dies ist eine lokale Kopie von und zu einer LITEONIT LCS-256 (256 GB) SSD.
Sie können --ignore-checksum beim ersten Durchlauf hinzufügen, um es noch schneller zu machen.
quelle
Vermeiden
-z
/--compress
: Komprimierung lädt nur die CPU, da die Übertragung nicht über ein Netzwerk, sondern über RAM erfolgt.--append-verify
: Eine unterbrochene Übertragung fortsetzen. Das klingt nach einer guten Idee, hat aber den gefährlichen Fehlerfall: Jede Zieldatei, deren Größe (oder größer) der der Quelle entspricht, wird ignoriert. Außerdem wird die gesamte Datei am Ende mit einer Prüfsumme versehen, was bedeutet, dass--no-whole-file
beim Hinzufügen eines gefährlichen Fehlerfalls keine signifikante Beschleunigung erfolgt .Verwenden
-S
/--sparse
: Folgen von Nullen in spärliche Blöcke verwandeln--partial
oder-P
welche ist--partial --progress
: Speichern Sie alle teilweise übertragenen Dateien für die zukünftige Wiederaufnahme. Hinweis: Dateien haben keinen temporären Namen. Vergewissern Sie sich daher, dass das Ziel von niemand anderem verwendet wird, bis die gesamte Kopie abgeschlossen ist.--no-whole-file
Damit alles, was erneut gesendet werden muss, Delta-Transfer verwendet. Das Lesen der Hälfte einer teilweise übertragenen Datei ist oft viel schneller als das erneute Schreiben.--inplace
Vermeiden des Kopierens von Dateien (aber nur, wenn das Ziel erst nach Abschluss der gesamten Übertragung gelesen wird)quelle