Migration einer Festplatte von einem anderen Anbieter zu Hetzner

Last change on 2024-05-13 • Created on 2024-05-13 • ID: CL-F7002

Beachten Sie, dass mit der unten beschriebenen Variante die gesamte Partition gesichert und auf den neuen Server kopiert wird. Um lediglich Nutzdaten zu migrieren, siehe "Nutzdaten von einem anderen Anbieter zu Hetzner migrieren".


Um von einem Server bei einem anderen Anbieter auf einen Server bei Hetzner zu migrieren, führen Sie folgende Schritte aus:



  • Systemkonfigurationsdateien sichern und kopieren

    Verbinden Sie sich mit beiden Servern:

    • Dem neuen Hetzner Cloud Server
    • Dem alten Server, der migriert werden soll

    Erstellen Sie auf dem neuen Hetzner Cloud Server einen neuen SSH-Key für die Migration:

    ssh-keygen -t ed25519 -f ~/.ssh/migrate-backups

    Hinterlegen Sie den öffentlichen SSH-Key (~/.ssh/migrate-backups.pub) anschließend auf dem alten Server in der Datei ~/.ssh/authorized_keys.

    Nun, da der neue Hetzner Cloud Server über SSH auf den alten Server zugreifen kann, können alle wichtigen Systemkonfigurationsdateien vom neuen Server auf den alten Server kopiert werden.

    Speichern Sie zunächst die Systemkonfigurationsdateien von Ihrem alten Server als Backup. Beachten Sie, dass Sie je nach Betriebssystem ggfls. andere Dateien speichern und kopieren müssen. Hier wird als Beispiel Ubuntu verwendet.

    # Auf dem alten Server ausführen
    mv /etc/fstab /etc/fstab.bak
    mv /etc/netplan /etc/netplan.bak
    mv /etc/network/interfaces /etc/network/interfaces.bak
    mv /etc/default/grub /etc/default/grub.bak
    mv /boot/grub /boot/grub.bak

    Anschließend können Sie alle notwendigen Dateien mittels des neuen SSH-Keys vom neuen Hetzner Cloud Server auf den alten Server kopieren. Beachten Sie, dass Sie je nach Betriebssystem ggfls. andere Dateien kopieren müssen. Hier wird als Beispiel Ubuntu verwendet.

    Ersetzen Sie 203.0.113.1 mit der IP-Adresse des alten Servers.

    # Auf dem neuen Hetzner Cloud Server ausführen
    scp -i ~/.ssh/migrate-backups /etc/fstab root@203.0.113.1:/etc/fstab
    scp -i ~/.ssh/migrate-backups -r /etc/netplan root@203.0.113.1:/etc/netplan
    scp -i ~/.ssh/migrate-backups /etc/network/interfaces root@203.0.113.1:/etc/network/interfaces
    scp -i ~/.ssh/migrate-backups /etc/default/grub root@203.0.113.1:/etc/default/grub
    scp -i ~/.ssh/migrate-backups -r /boot/grub root@203.0.113.1:/boot/grub

    Die Dateien sollten nun auf dem alten Server zu finden sein.


  • Starten Sie den neuen Hetzner Cloud Server im Rescue Modus.

    » Getting Started: Rescue verwenden


  • Partitionen vom alten Server auf den neuen Hetzner Cloud Server kopieren

    Verbinden Sie sich mit dem neuen Hetzner Cloud Server im Rescue Modus.

    Bei einer Warnung beim Verbinden, siehe "Kommandozeilen-Warnung".

    • SSH-Key erstellen

      Erstellen Sie einen neuen SSH-Key im Rescue-Modus und hinterlegen Sie den öffentlichen SSH-Key (~/.ssh/migrate-backups.pub) anschließend auf dem alten Server in der Datei ~/.ssh/authorized_keys.

      ssh-keygen -t ed25519 -f ~/.ssh/migrate-backups

    Die nächsten Schritte hängen davon ab, ob es auf dem alten Server jeweils eine Root-Partition und eine Boot-Partition gibt, oder nur eine Partition für beides — Root und Boot.

    Beispiele:

    • Zwei einzelne Partitionen:
      holu@<old_server>:~# lsblk
      NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda           8:0    0  100G  0 disk 
      ├─sda1        8:1    0  512M  0 part /boot
      └─sda2        8:2    0    20G  0 part /

    • Eine gemeinsame Partition:
      holu@<old_server>:~# lsblk
      NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      sda           8:0    0  100G  0 disk 
      └─sda1        8:1    0  100G  0 part 
        ├─myvg-root 253:0    0   95G  0 lvm  /
        └─myvg-boot 253:1    0    5G  0 lvm  /boot

    Dieses Getting Started geht davon aus, dass der alte Server unterschiedliche Partitionen verwendet.

    • Partitionen kopieren

      Führen Sie sowohl auf dem alten Server als auch auf dem neuen Server den Befehl lsblk aus, um sich die Partitionsnamen anzeigen zu lassen und passen Sie diese in den folgenden Befehlen entsprechend an. In diesen Beispielbefehlen heißen die Partitionen auf dem Hetzner Cloud Server sda1, sda14 und sda15.

      ssh -i ~/.ssh/migrate-backups root@<old_server> "dd bs=4M if=/dev/<old-root-partition> status=progress" | dd bs=4M of=/dev/sda1
      ssh -i ~/.ssh/migrate-backups root@<old_server> "dd bs=4M if=/dev/<old-efi-partition> status=progress" | dd bs=4M of=/dev/sda14
      ssh -i ~/.ssh/migrate-backups root@<old_server> "dd bs=4M if=/dev/<old-boot-partition> status=progress" | dd bs=4M of=/dev/sda15
    • Partitionen einhängen

      Bevor Sie die Partitionen einhängen, stellen Sie sicher, dass diese ein Dateisystem besitzen. Dies können Sie sich beispielsweise mit lsblk -o NAME,FSTYPE,LABEL anzeigen lassen.

      Beispiel:

      root@<new-server># lsblk -o NAME,FSTYPE
      sda
      ├─sda1  ext4
      ├─sda14
      └─sda15 vfat

      (siehe "Linux: Blockspeicher formatieren und einhängen")

      Wenn die Partitionen ein Dateisystem besitzen, können diese eingehängt werden:

      Wenn Sie sich beim Boot-Einhängepunkt nicht sicher sind (z.B. /mnt/boot oder /mnt/boot/efi), können Sie beispielsweise den Output von cat /mnt/etc/fstab prüfen.

      mount /dev/sda1 /mnt
      mount /dev/sda15 /mnt/boot/efi

  • Bootloader aktualisieren

    Bevor Sie den Bootloader aktualisieren, prüfen Sie nocheinmal ob in /boot/grub/grub.cfg und /etc/fstab alle UUIDs korrekt angegeben sind. Hier müssen die UUIDs des neuen Servers angegeben sein.

    Vergeben Sie Schreibrechte und chrooten Sie ins System:

    mount -o bind /dev /mnt/dev
    mount --rbind /sys /mnt/sys
    mount -t proc /proc /mnt/proc
    chroot /mnt /bin/bash

    Installieren Sie grub neu und beenden Sie anschließend die chroot-Umgebung:

    Ersetzen Sie /dev/sda entsprechend.

    update-grub
    grub-install /dev/sda
    exit

  • Hetzner Cloud Server neustarten

    reboot

    Nach dem Neustart, sollte sich der Hetzner Cloud Server nicht mehr im Rescue Modus befinden und alle Daten sollten vorhanden sein.

Der neue Server sollte nun soweit eingerichtet sein und die wichtigsten Daten enthalten. Falls Sie eine Domain nutzen, denken Sie daran nun auch die DNS-Einträge an die neue IP-Adresse anzupassen. Löschen Sie den alten Server erst, nachdem Sie sorgfältig geprüft haben, ob alle Daten erfolgreich migriert wurden und alles wie erwartet funktioniert.