Wie verschiebe ich Linux auf eine andere Partition?

9

Ich muss eine Kopie eines funktionierenden Linux-Systems erstellen, das (in / enthalten und der neue Ort in / mnt / sdb5 vorbereitet) eine beträchtliche Menge an Hard-, Softlinks und speziellen Dateien in / dev zu enthalten scheint. würde cpiodiesen Job erledigen, ohne zusätzliche Magie anzuwenden?

Derzeit bekannte Sicherheitsvorkehrungen:

  • Das laufende System wird erst entfernt / geändert, wenn die Kopie als bootfähig angesehen wird und mit ihr funktioniert root=/dev/sdb5. Erstellen Sie vor dem Entfernen eine vollständige Partitionssicherung.
  • verwendet cpio zum separaten Archivieren jedes Stammverzeichnisses und entpackt es daher aus der LiveCD-Umgebung, damit die Spenderpartition nicht beschädigt wird

Aber trotzdem wird es keine Zeit verlieren, nur weil cpio ein Flag übersehen und die Berechtigungen / Knotentyp / soft oder hardlink verkrüppelt hat.

Welches Werkzeug / welche Unterwasserfelsen sind zu vermeiden?

Kagali-San
quelle
@ Warren, danke. werde jetzt einen weiteren cpio-vs-tar-Test machen;)
kagali-san
Keine Sorge: hoffe es hilft :)
Warren

Antworten:

10

Um die eigentliche Frage zu beantworten cpio: Dies sind die Flags, für die ich verwenden würde cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Da Sie nicht über das Netzwerk kopieren, würde ich natürlich nur Folgendes verwenden cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

Und wenn Sie in der Lage sein möchten, das Kopieren mehrmals durchzuführen, rsyncist dies eine bessere Wahl für die Wiederaufnahmefunktionen. (Es cpbehandelt auch ACLs und erweiterte Attribute und kann optional über das Netzwerk arbeiten cpio. Daher ist es die nützlichste Option, außer die erste Kopie lokal zu erstellen, die ich lieber verwende cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Vergessen Sie nicht zu kopieren /bootund /dev!

/bootist einfach, kopiere es einfach. Aber /devheutzutage ist es viel schwieriger, da es von versteckt wird udev. Ich empfehle das folgende Verfahren:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Kopie /devnach /mnt/sdb5einem der obigen Befehlen
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Teddy
quelle
6

Wie @Klox bereits erwähnt hat, stimme ich beim Kopieren von Partitionen derselben Größe der Verwendung zu dd.

Aber wenn Sie eine Festplatte auf eine andere Partition mit unterschiedlicher Größe kopieren möchten, würde ich lieber mit gehen rsync. Hängen Sie die neue Partition ein (sagen wir / mnt / new) und:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Keine zusätzliche Magie für Symlinks und keine Notwendigkeit für eine Live-CD (Einzelbenutzer / Init 1 reicht völlig aus).

Torian
quelle
Ahh, ja. Ich benutze die rsyncganze Zeit und habe das Offensichtliche verpasst. Ich mag ddaus den Gründen, die ich angegeben habe, aber rsynces passt besser zu den Bedürfnissen des OP.
Klox
3

Bei der optimaleren Variante von ddwird partimagenur der verwendete Abschnitt der Partition kopiert, wodurch das Kopieren großer nicht verwendeter Partitionen zweckmäßiger wird.

Beachten Sie die wichtige Einschränkung:

Partimage unterstützt NICHT Ext4, was bei neuen Ubuntu-Installationen die Standardeinstellung ist.

Eine praktische Kopie ist in der System Rescue CD- Distribution enthalten.

Steve-o
quelle
2

Wenn ich Linux-Installationen zwischen Festplatten verschiebe, starte ich immer von einer Live-CD und ddkopiere damit die gesamte Partition. Ich erkenne, dass dies nicht mit Änderungen der Festplattengröße zu tun hat (zwangsläufig ist die neue Festplatte größer, was die Dinge vereinfacht), aber ich mag die Technik genau aus den Gründen, aus denen Sie sich Sorgen machen cpio: Es kann etwas schief gehen. Mit dieser ddTechnik ist alles oder nichts: Entweder startet die neue Festplatte und alles ist gleich, oder die Festplatte startet nicht. Es besteht keine Gefahr, dass später lauernde Probleme auftauchen.

Jetzt gibt es natürlich das Problem, dass die Partition die neue Festplatte nicht füllt, aber ich möchte lieber eine neue Partition erstellen, um den zusätzlichen Speicherplatz zu füllen, und mich auf Symlinks verlassen, um Verzeichnisse zu verschieben. (Ich bin sicher, dass es auch Tools zum Ändern der Größe von Partitionen gibt, aber ich habe sie nicht verwendet.)

Klox
quelle
Das System, über das ich spreche, hat auf einer 500-GB-XFS-Partition nur etwa 50 GB frei (das kann nicht verkleinert werden, derzeit wird nur das Wachsen über unterstützt xfs_grow), und die Root-Partition ist ebenfalls XFS. Schlimmer noch, es ist ein etablierter Gentoo, der selbst fast so fett ist. Schlimmer noch, der Umzug muss ohne Hinzufügen von mehr Speicher erfolgen und kann derzeit nicht mehr als 60 Gigs sichern - also keine Partitionsoperationen. Sie müssen Win 'auf diese Maschine setzen, um einige Dinge zu testen.
Kagali-San
dd ist auch nett, aber für Laufwerks- / Partitionsoperationen verwende ich eher proprietäre Lösungen. Acronis TrueImage scheint besser zu funktionieren (Komprimierung, Samba-Freigaben - von livecd / liveusb flash).
Kagali-San