Für eine einfache Übertragung von / home auf eine andere Festplatte verwende ich das cp -a
, was mir extrem langsam erscheint. Möchten Sie einen effizienteren Weg kennen, um die Aufgabe zu erledigen. Ich habe / home als logisches Volume gemountet, aber die Zielfestplatte ist kein LVM-System
9
cp
es langsam ist, wären auch andere Methoden langsam. Es sei denn, es ist nicht dateiorientiertes Kopierennoatime
Mount-Option ausprobieren , um unnötige Schreibvorgänge zu reduzieren, insbesondere in das Quelldateisystem.Antworten:
Versuchen Sie
tar
,pax
,cpio
, mit etwas Pufferung.Ich schlage
bsdtar
statttar
weil zumindest bei einigen Linux-Distributionen vortar
GNU-Tar zu verwenden, das im Gegensatz zubsdtar
(vonlibarchive
) nicht die Beibehaltung erweiterter Attribute oder ACLs oder Linux-Attribute behandelt.pv
puffert bis zu 500 MB Daten, um Schwankungen der Lese- und Schreibgeschwindigkeit auf den beiden Dateisystemen besser Rechnung zu tragen (obwohl in Wirklichkeit wahrscheinlich eine Festplatte langsamer ist als die andere und der Rückschreibemechanismus des Betriebssystems diese Pufferung als gut so wird es wahrscheinlich keinen großen Unterschied machen). Ältere Versionen von werdenpv
nicht unterstützt-a
(für Durchschnittsgeschwindigkeitsberichte), können Siepv -B 200M
dort alleine verwenden.In jedem Fall haben die werden nicht die Begrenzung der
cp
, dass das tut liest und die Schreib nacheinander ausgeführt werden. Hiertar
arbeiten zwei gleichzeitig, sodass einer einen FS lesen kann, während der andere darauf wartet, dass der andere FS mit dem Schreiben fertig ist.Für ext4 und wenn Sie auf eine Partition kopieren, die mindestens so groß wie die Quelle ist, sehen Sie auch
clone2fs
, wie diese funktioniertntfsclone
: Kopieren Sie die zugewiesenen Blöcke nur und nacheinander, sodass der Rotationsspeicher wahrscheinlich am effizientesten ist.Partclone verallgemeinert dies auf einige verschiedene Dateisysteme.
Nun einige Dinge, die beim Klonen eines Dateisystems berücksichtigt werden müssen.
Beim Klonen werden alle Verzeichnisse, Dateien und deren Inhalte kopiert ... und alles andere. Jetzt variiert alles andere von Dateisystem zu Dateisystem. Auch wenn wir nur die gemeinsamen Merkmale traditioneller Unix-Dateisysteme berücksichtigen, müssen wir Folgendes berücksichtigen:
Wenn Sie dann die
ext4
meisten Linux-Dateisysteme in Betracht ziehen, müssen Sie Folgendes berücksichtigen:SELinux
)Nicht alle Tools unterstützen alle diejenigen, oder wenn sie es tun, müssen Sie es explizit wie die ermöglichen
--sparse
,--acls
... Optionenrsync
,tar
... Und wenn sie auf einem anderen Dateisystem kopieren, müssen Sie den Fall betrachten , wo sie es nicht tun unterstützen den gleichen Funktionsumfang.Möglicherweise müssen Sie auch Attribute des Dateisystems selbst berücksichtigen, z. B. die UUID, den reservierten Speicherplatz für root, die fsck-Häufigkeit, das Journalverhalten, das Format der Verzeichnisse ...
Dann gibt es komplexere Dateisysteme, in denen Sie die Daten nicht wirklich kopieren können, indem Sie Dateien kopieren. Betrachten Sie zum Beispiel
zfs
oderbtrfs
wenn Sie sie Schnappschüsse von Subvolumes und abzweigen nehmen können ... Diejenigen , würden ihre eigenen dedizierten Werkzeuge, um Daten zu kopieren.Die Byte-zu-Byte-Kopie des Blockgeräts (oder zumindest der zugewiesenen Blöcke, wenn möglich) ist häufig die sicherste, wenn Sie sicherstellen möchten, dass Sie alles kopieren. Achten Sie jedoch auf das UUID-Konfliktproblem. Dies bedeutet, dass Sie auf etwas Größeres kopieren (obwohl Sie die Größe einer Snapshot-Kopie der Quelle vor dem Kopieren ändern können).
quelle
--acls
Möglichkeit, die ACLs im Archiv zu speichern. Und ich wäre überrascht, wenn ein außerirdisches (bsdtar
besseres ) Werkzeug besser damittar
für Linux (star
,bsdtar
,tar
), ich bin mir nicht bewusst , dass GNU tar ist besser als die andere. Die Wahl für GNU-Tools ist im Allgemeinen eher politischer als technischer Natur (siehe zum Beispielbash
).--acls
Ich empfehle rsync zum Beispiel:
Oder um mit Komprimierung zu übertragen:
quelle
rsync
ist in der Regel viel langsamer alscp
odertar|tar
rsync
Am effizientesten ist es, wenn Sie die Quelldaten bereits teilweise auf dem Zieldatenträger verfügbar haben, da nur fehlende / geänderte Daten übertragen werden. Ich würde es nicht für eine schnelle "erste Kopie" verwenden.