Linux klonen mit rsync
Posted by coldtobi | 17 Jun, 2007, 12:28Ich habe mir eine neue -- größere, schnellere, etc -- SATA-Platte geleistet.
Nun ist das bei einem anständigen Betriebsystem kein Grund, dass man dasselbe neu installieren muss.
Aus diesem Grund möchte ich die alte Platte auf die neue kopieren.
Am einfachsten geht natürlich sowas mit "dd if=/dev/alte-platte of=/dev/neue-platte". Diesmal jedoch -- damits nicht so langweilig ist -- möchte ich noch ein Feature oben drauf packen:
Ich möchte noch gleichzeitig das Dateisystem wechseln: Aus diversen Gründen bin ich mit reiserfs nicht ganz so zufrieden, so dass ich gerne auf ext3 umsteigen möchte. Zusätzlichx ist die neue Platte größer, und da ich kein LVM verwendet habe ist dd hier nicht so optimal.
Ich hab das ganze von einer gebooteten Knoppix gemacht, damit sich an den Daten auch ja nix fehlt. Wer ein wenig mutiger ist, kann das ganze natürlich auch aus dem "normalen" System machen, sollte aber zur Sicherheit in den Single User Mode wechslen (mit init 1). Ich empfehls nicht.
Jetzt zum How-To:
WARNUNG: Erst denken dann tippen! Ein falscher Buchstabe macht alle Daten platt! Die Beispiele sind für meinen Rechner ok, für andere kann es zum Disaster führen. Vorallem Partionsnamen prüfen! Für Tippfehler keine Haftung!
1. neue Platte partitionieren (z.B mit fdisk). Für den weiteren Artikel: /dev/sda3 ist meine neue Partition, /dev/hda3 die alte.
2. Filesystem erstellen:
mkfs.ext3 -j -m1 /dev/sda3
3. Filesysteme mounten. (Nur aus paranoiden Gründen mounte ich "alt" read-only)
mkdir /mnt/alt ; mount -o ro /dev/hdb3 /mnt/alt
mkdir /mnt/neu ; mount /dev/sda3 /mnt/neu
4. Jetzt kann der Spass losgehen: "lost+found", "proc", "mnt" und "sys" sollte man nicht kopieren. (tmp braucht man normalerweise nicht kopieren, man sollte aber das Verzeichnis erstellen und die richtigen Rechte zuweisen. Bequemlichkeitshalber lass ich es mal mit synchronisieren...)
rsync -aH --stats --progress --exclude=/lost+found --exclude="mnt" --exclude=/sys --exclude=/proc /mnt/alt/ /mnt/neu
Der"/" nach /mnt/alt ist notwendig, sonst macht rsync ein weiteres Verzeichnis auf, was man nicht will.
Alternativ zu den ganzen excludes kann auch die rsync-Option "--one-file-system" helfen. Die sorgt dann dafür, dass nicht auf ein anderes Dateisystem gewechselt wird, wie z.b proc (procfs), und eventuell andere gemountete Dateisysteme. Dies habe ich aber nicht ausprobiert, sondern nur in der man page von rsync gesehen.
5. Nach einen oder drei Kaffee ist rsync dann fertig. Jetzt muss man noch dafür sorgen, dass man auch von der neuen Platte booten kann. Hier die Schritte, die bei mir notwendig waren: Der Bequemlichkeithalber hab ich auf die neue Platte gechrooted, so dass sich alle Pfade auf die neue Installation beziehen. Bei der Gelegenheit kann man auch gleich noch ein paar Verzeichnisse erstellen, und auch proc und sys mounten.
chroot /mnt/neu
mkdir -p /proc /sys /tmp /mnt /boot
mount -t proc proc /proc
mount -t sysfs sysfs /sys
7. /etc/fstab anpassen. Das neue root ist "dev/sda3", damit Linux auch weiss, wo "/" ist.
8. grub auf der neuen Platte installiern:
grub-install /dev/sda
9. neu booten.
10. neues System geniessen.
[Update Juli 2010] Ich hab mal die Vorschläge / Hinweise aus den Kommentaren eingearbeitet.
Linux / Debian, my 2 cents | Comments (4) | Trackbacks (0)
Related Articles:
- Installing Debian on the Thecus N2100 -- PART 3 -- Installing Debian
- La Fonera: A better way to enable RedBoot via Telnet / Ethernet (safely) [HowTo]
- Reseting the La Fonera (dt.)
- Installing Debian on the Thecus N2100 -- PART 4 -- Installing Debian (2)
- RECHTLICHES
Twisted : Falscher Mountpoint
04/10/2007, at 15:26 [ Reply ]
Hallo Coldtobi,
unter Punkt 3 ist der mountpoint falsch. Es muss heißen /mnt/neu.
Ansonsten vielen Dank für die Anleitung.
[coldtobi] schon korrigiert... Danke
hombertho : Vielen Dank
04/09/2008, at 11:01 [ Reply ]
Klasse Tipp, der hat mir geholfen mein VMWare Installation auf meinen neuen Server umzuziehen.
Viele Grüße
Thomas
Siegmund : Probleme mit --exclude
14/12/2008, at 12:21 [ Reply ]
Hallo Coldtobi,
danke für die ausführliche Beschreibung. Dein Vorschlag hat relativ gut funktioniert :-).
Ein Haken dabei: alle tmp-Verzeichnisse werden nicht angelegt und nicht kopiert.
Dies hat bei mir zu Problemen geführt. Ein vorinstalliertes kmail lief nicht mehr, weil das tmp Verzeichnis fehlte.
Ähnliche Probleme gibt es mit --exclude=sys/, da in den Linux-Headern derartige Verzeichnisse existieren.
Besser ist es vielleicht, wenn man mit der option --exclude vorsichtiger umgeht, lieber danach die überflüssigen Verzeichnisse löschen.
me : --exclude
23/07/2010, at 16:47 [ Reply ]
--exclude funktioniert schon, es muss aber jeweils --exclude=/pfad und nicht --exclude=pfad/ heissen...