« Previous | Next»

Linux klonen mit rsync

Posted by coldtobi | 17 Jun, 2007, 12:28

Ich 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. 

_ASIP_

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:

4 Comments | "Linux klonen mit rsync" »

  1. 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

  2. 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

  3. 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.

  4. me : --exclude

    23/07/2010, at 16:47 [ Reply ]

    --exclude funktioniert schon, es muss aber jeweils --exclude=/pfad und nicht --exclude=pfad/ heissen...