Zum Inhalt springen

netcup Dokumentation

Server

Server migrieren per rsync

Erfahre, wie du die Daten deines Servers per rsync auf einen neuen Server überträgst.

1. Was ist rsync?

rsync (Remote Sync) ist ein Werkzeug zur effizienten Dateiübertragung und -synchronisation. Es verwendet einen delta-Transfer-Algorithmus: Statt Dateien vollständig zu übertragen, sendet rsync nur die Unterschiede zwischen Quelle und Ziel. Das macht es besonders effizient für wiederholte Synchronisierungsläufe.

 

Wichtige Eigenschaften:

  • inkrementelle Übertragung – nur geänderte Blöcke werden übertragen
  • Checksummen-Verifikation – Integrität jeder Datei wird geprüft
  • Unterstützung für SSH – sichere Übertragung über das Netzwerk
  • Erhalt von Metadaten – Berechtigungen, Zeitstempel, Symlinks und Eigentümer bleiben erhalten
  • Trockenlauf-Modus (--dry-run) – Simulation ohne tatsächliche Änderungen

2. Vorbereitung

Lege vor der Datenübertragung zur Sicherheit ein vollständiges Backup an.

1. Erste Schritte

  1. Melde dich im Server Control Panel (SCP) an.
  2. Wähle die Quell- und Zielserver aus, die du für die Migration verwenden willst.
  3. Stelle sicher, dass die Server ausgeschaltet (offline) sind.
  4. Gehe zu Medien > Rettungssystem.
  5. Klicke rechts auf Aktivieren und OK.
  6. Notiere dir die angezeigten Passwörter.
  7. Falls das SCP die Server nicht automatisch neu startet, starte sie manuell neu.
  8. Die Server werden im Rettungssystem gestartet.

2. Inventur der bestehenden Daten erstellen

Vor dem Umzug sollte eine vollständige Inventur des Quellservers erstellt werden:

# Übersicht der Festplattennutzung
df -h

 

# Größe einzelner Verzeichnisse
du -sh /var /home /etc /opt /srv

Notiere, welche Dienste laufen, welche Konfigurationsdateien relevant sind und welche Datenbanken eventuell separat behandelt werden müssen.

3. SSH-Zugang sicherstellen

rsync verwendet SSH für die Übertragung. Richte vorab einen passwortlosen SSH-Zugang via Schlüsselpaar ein:

# Schlüsselpaar auf dem Quellserver generieren (falls nicht vorhanden)
ssh-keygen -t ed25519 -C "server-migration"

 

# Öffentlichen Schlüssel auf den Zielserver kopieren
ssh-copy-id root@zielserver.example.com

 

# Verbindung testen
ssh root@zielserver.example.com "echo Verbindung erfolgreich"

Beachte, dass der SSH-Schlüssel nach der Datenübertragung verloren geht.

4. Quellserver-Festplatten mounten

Partitionen herausfinden

Damit du auf die Daten deines Betriebssystems zugreifen kannst, musst du die Partitionen mit deinen Daten mounten. Damit du weißt wie die Partitionen heißen, führe folgenden Befehl aus:

lsblk

Partitionen mounten

Die Anzahl und Bezeichnung der Partitionen sind je nach Konfiguration individuell und können von den unten genannten abweichen.

# Root Partition
mkdir -p /mnt
mount /dev/vda1 /mnt

 

# Boot Partition
mkdir -p /mnt/boot
mount /dev/vda2 /mnt/boot

 

# Home Partition
mkdir -p /mnt/home
mount /dev/vda3 /mnt/home

5. Zielserver partitionieren

Mit der Partitionierung gehen Daten auf der entsprechenden Festplatte verloren!

Partitioniere den Zielserver exakt gleich wie beim Quellserver, siehe:

https://www.netcup.com/de/helpcenter/dokumentation/server/partitionierung-kvm-server

Mounte die Partitionen anschließend exakt gleich wie beim Quellserver.

3. Der rsync-Befehl im Detail

Der grundlegende Befehl für einen Server-Umzug lautet:

rsync -aHAXvz --progress \
 --exclude=/proc \
 --exclude=/sys \
 --exclude=/dev \
 --exclude=/run \
 --exclude=/tmp \
 /mnt/ root@zielserver.example.com:/mnt/

Übersicht der wichtigsten Optionen

Option

Bedeutung

-a

Archivmodus: rekursiv, Symlinks, Berechtigungen, Zeitstempel, Eigentümer

-H

behält Hardlinks bei

-A

überträgt ACLs (Access Control Lists)

-X

überträgt erweiterte Attribute (xattrs)

-v

ausführliche Ausgabe (verbose)

-z

komprimiert während der Übertragung

--progress

zeigt Fortschritt pro Datei an

--delete

löscht Dateien im Ziel, die auf der Quelle nicht mehr vorhanden sind

--dry-run / -n

Simulation ohne Änderungen

--exclude

schließt Verzeichnisse oder Muster aus

4. Ablauf

1. Ersten Testlauf (Dry Run) durchführen

Führe zunächst einen Testlauf durch, um zu sehen, was übertragen werden würde:

rsync -aHAXvzn --progress \
 --exclude=/proc --exclude=/sys --exclude=/dev \
 --exclude=/run --exclude=/tmp \
 /mnt/ root@zielserver.example.com:/mnt/

Prüfe die Ausgabe sorgfältig auf unerwartete Dateien oder Pfade.

2. Ersten vollständigen Synchronisierungslauf durchführen

Starte die erste Übertragung. Je nach Datenmenge kann dieser Lauf mehrere Stunden dauern. Verwende screen oder tmux, damit der Prozess bei einer Verbindungsunterbrechung weiterläuft:

screen -S migration

 

rsync -aHAXvz --progress --delete \
 --exclude=/proc --exclude=/sys --exclude=/dev \
 --exclude=/run --exclude=/tmp \
 --log-file=/root/rsync-migration.log \
 /mnt/ root@zielserver.example.com:/mnt/

3. Finaler Synchronisierungslauf (Cutover) durchführen

Stoppe im Wartungsfenster alle relevanten Dienste auf dem Quellserver und führe einen letzten rsync-Lauf durch, um die zwischenzeitlich geänderten Dateien zu übertragen:

# Dienste stoppen (Beispiel)
systemctl stop apache2 mysql nginx

 

# Finaler Sync
rsync -aHAXvz --progress --delete \
 --exclude=/proc --exclude=/sys --exclude=/dev \
 --exclude=/run --exclude=/tmp \
 --log-file=/root/rsync-migration-final.log \
 /mnt/ root@zielserver.example.com:/mnt/

Da der Großteil der Daten bereits übertragen wurde, sollte dieser Lauf deutlich schneller abgeschlossen sein.

4. Systemdateien auf dem Zielserver anpassen

Nach der Datenübertragung müssen auf dem Zielserver Bootloader neu installiert sowie /etc/fstab und die Netzwerkkonfiguration angepasst werden:

# Bootloader neu installieren (falls komplettes System migriert)
grub-install /dev/vda
update-grub

 

# /etc/fstab prüfen und UUID-Einträge anpassen
blkid
nano /etc/fstab

 

# Netzwerkkonfiguration anpassen (IP-Adressen, Hostnamen)
hostnamectl set-hostname neuer-servername
nano /etc/network/interfaces   # oder nmcli / netplan je nach Distribution

5. Funktion auf dem Zielserver prüfen

Starte alle Dienste auf dem Zielserver und prüfe die Funktionalität:

systemctl start mysql apache2 nginx
systemctl status mysql apache2 nginx

 

# Logs prüfen
journalctl -xe
tail -f /var/log/nginx/error.log

6. DNS umschalten

Wenn alle Tests erfolgreich sind, ändere den DNS-Eintrag, sodass er auf die neue IP-Adresse zeigt. Warte die Time To Live (TTL) ab, bis die Propagation abgeschlossen ist.

Das könnte dich auch interessieren:

Zuletzt aktualisiert: 1. Oktober 2026

War dieser Artikel hilfreich?