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
- Melde dich im Server Control Panel (SCP) an.
- Wähle die Quell- und Zielserver aus, die du für die Migration verwenden willst.
- Stelle sicher, dass die Server ausgeschaltet (offline) sind.
- Gehe zu Medien > Rettungssystem.
- Klicke rechts auf Aktivieren und OK.
- Notiere dir die angezeigten Passwörter.
- Falls das SCP die Server nicht automatisch neu startet, starte sie manuell neu.
- 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?