Momentan laufe ich tar czf
um Sicherungsdateien zu kombinieren. Die Dateien befinden sich in einem bestimmten Verzeichnis.
Aber die Anzahl der Dateien wächst. Die Verwendung tzr czf
dauert zu lange (mehr als 20 Minuten und Zählen).
Ich muss die Dateien schneller und skalierbarer kombinieren.
Ich habe gefunden genisoimage
, readom
und mkisofs
. Aber ich weiß nicht, welcher am schnellsten ist und welche Einschränkungen für jeden von ihnen gelten.
tar
ein erheblicher Overhead entsteht. Das Lesen der Dateien ist hier der teure Vorgang. Sie sollten entweder die Art und Weise ändern, in der Ihre Dateien gespeichert werden, oder einen völlig anderen Ansatz wählen (das gesamte Dateisystem kopieren). Wir können Ihnen nicht viel helfen, ohne zu wissen, wie Ihre Dateien organisiert sind.Antworten:
Sie sollten prüfen, ob die meiste Zeit für die CPU oder für die E / A aufgewendet wird. In beiden Fällen gibt es Möglichkeiten, dies zu verbessern:
A: nicht komprimieren
Sie erwähnt nicht „Kompression“ in der Liste der Anforderungen so die „z“ versuchen , fallen aus Ihren Argumenten Liste:
tar cf
. Dies könnte die Dinge etwas beschleunigen.Es gibt andere Methoden, um den Vorgang zu beschleunigen, z. B. die Verwendung von "-N", um Dateien zu überspringen, die Sie bereits zuvor gesichert haben.
B: sichern Sie die gesamte Partition mit dd
Wenn Sie alternativ eine gesamte Partition sichern, erstellen Sie stattdessen eine Kopie des gesamten Datenträgerabbilds. Dies würde Verarbeitungsaufwand und viel Zeit für die Suche nach Plattenköpfen sparen .
tar
und jedes andere Programm, das auf einer höheren Ebene arbeitet, hat den Overhead, Verzeichniseinträge und Inodes lesen und verarbeiten zu müssen, um festzustellen, wo sich der Dateiinhalt befindet, und mehr Kopfdatenträgersuchen durchzuführen , wobei jede Datei von einem anderen Ort von der Festplatte gelesen wird.Um die zugrunde liegenden Daten viel schneller zu sichern, verwenden Sie:
dd bs=16M if=/dev/sda1 of=/another/filesystem
(Dies setzt voraus, dass Sie kein RAID verwenden, wodurch sich die Situation möglicherweise ein wenig ändert.)
quelle
pigz
wenn im System mehr als ein Prozessor vorhanden ist.Um zu wiederholen, was andere gesagt haben: Wir müssen mehr über die Dateien wissen, die gesichert werden. Ich werde hier mit einigen Annahmen gehen.
An die tar-Datei anhängen
Wenn Dateien nur zu den Verzeichnissen hinzugefügt werden (dh keine Datei wird gelöscht), stellen Sie sicher, dass Sie die vorhandene TAR-Datei anhängen, anstatt sie jedes Mal neu zu erstellen. Sie können dies tun, indem Sie den vorhandenen Archivdateinamen in Ihrem
tar
Befehl anstelle eines neuen angeben (oder den alten löschen).Schreiben Sie auf eine andere Festplatte
Das Lesen von derselben Festplatte, auf die Sie schreiben, kann die Leistung beeinträchtigen. Versuchen Sie, auf eine andere Festplatte zu schreiben, um die E / A-Last zu verteilen. Wenn sich die Archivdatei auf demselben Datenträger wie die Originaldateien befinden muss, verschieben Sie sie anschließend.
Nicht komprimieren
Ich wiederhole nur, was @ Yves gesagt hat. Wenn Ihre Sicherungsdateien bereits komprimiert sind, ist eine erneute Komprimierung kaum erforderlich. Sie verschwenden nur CPU-Zyklen.
quelle
Verwendung von Teer mit lz4-Komprimierung wie in
bietet Ihnen das Beste aus beiden Welten (ziemlich gute Komprimierung UND Geschwindigkeit). Erwarten Sie eine Komprimierungsrate von ca. 3, auch wenn Ihre Daten Binärdateien enthalten.
Weiterführende Literatur: Vergleich von Kompressionsalgorithmen Wie man mit lz4 tariert
quelle
Ich bin überrascht, dass niemand Dump and Restore erwähnt. Es ist viel schneller als dd, wenn Sie freien Speicherplatz im Dateisystem haben.
Beachten Sie, dass Sie je nach Dateisystem möglicherweise verschiedene Tools benötigen:
Beachten Sie, dass einige Programme keine eingebaute Komprimierung haben (alle außer dump) - leiten Sie zu stdout und verwenden Sie pigz nach Bedarf. ;-)
quelle