Versuchen Sie tar
, pax
, cpio
, mit etwas Pufferung.
(cd /home && bsdtar cf - .) |
pv -trab -B 500M |
(cd /dest && bsdtar xpSf -)
Ich schlage bsdtar
statt tar
weil zumindest bei einigen Linux-Distributionen vortar
GNU-Tar zu verwenden, das im Gegensatz zu bsdtar
(von libarchive
) 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 werden pv
nicht unterstützt-a
(für Durchschnittsgeschwindigkeitsberichte), können Sie pv -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. Hier tar
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:
- Links: Symbolische Links und Hardlinks. Manchmal müssen wir uns überlegen, was mit absoluten Symlinks oder Symlinks zu tun ist, die auf das zu klonende Dateisystem / Verzeichnis verweisen
- Letzte Änderungs-, Zugriffs- und Änderungszeiten: Nur die ersten beiden können mit der Dateisystem-API (cp, tar, rsync ...) kopiert werden.
- Spärlichkeit: Sie haben diese 2-TB-Sparse-Datei, bei der es sich um ein VM-Disk-Image handelt, das nur 3 GB Speicherplatz benötigt. Der Rest ist spärlich. Eine naive Kopie würde das Ziellaufwerk füllen.
Wenn Sie dann die ext4
meisten Linux-Dateisysteme in Betracht ziehen, müssen Sie Folgendes berücksichtigen:
- ACLs und andere erweiterte Attribute (wie die für
SELinux
)
- Linux-Attribute wie unveränderliche Flags oder Nur-Anhängen-Flags
Nicht alle Tools unterstützen alle diejenigen, oder wenn sie es tun, müssen Sie es explizit wie die ermöglichen --sparse
, --acls
... Optionen rsync
, 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).
cp
es langsam ist, wären auch andere Methoden langsam. Es sei denn, es ist nicht dateiorientiertes Kopieren