Migration einer Festplatte von einem anderen Anbieter zu Hetzner

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

Beachte, 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ühre folgende Schritte aus:



  • Systemkonfigurationsdateien sichern und kopieren

    Verbinden dich mit beiden Servern:

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

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

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

    Hinterlegen du 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 du zunächst die Systemkonfigurationsdateien von deinem alten Server als Backup. Beachte, dass du 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 kannst du alle notwendigen Dateien mittels des neuen SSH-Keys vom neuen Hetzner Cloud Server auf den alten Server kopieren. Beachte, dass du je nach Betriebssystem ggfls. andere Dateien kopieren müssen. Hier wird als Beispiel Ubuntu verwendet.

    Ersetze 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 du den neuen Hetzner Cloud Server im Rescue Modus.

    » Getting Started: Rescue verwenden


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

    Verbinden dich mit dem neuen Hetzner Cloud Server im Rescue Modus.

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

    • SSH-Key erstellen

      Erstelle einen neuen SSH-Key im Rescue-Modus und hinterlegen du 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ühre sowohl auf dem alten Server als auch auf dem neuen Server den Befehl lsblk aus, um sich die Partitionsnamen anzeigen zu lassen und passen du 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

      Stelle vor dem Einhänge sicher, dass die Partitionen ein Dateisystem besitzen. Dies kannst du 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 dich beim Boot-Einhängepunkt nicht sicher sind (z.B. /mnt/boot oder /mnt/boot/efi), kannst du beispielsweise den Output von cat /mnt/etc/fstab prüfen.

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

  • Bootloader aktualisieren

    Stelle sicher, den Bootloader aktualisieren, prüfen du 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.

    Verlege Schreibrechte und chroote du ins System:

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

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

    Ersetze /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 du eine Domain nutzen, denken du daran nun auch die DNS-Einträge an die neue IP-Adresse anzupassen. Löschen du den alten Server erst, nachdem du sorgfältig geprüft haben, ob alle Daten erfolgreich migriert wurden und alles wie erwartet funktioniert.