AWS S3 Exit Strategie: Der technische Guide zur Migration auf Hetzner & Ceph

12. Januar 2026
Timo WevelsiepTimo Wevelsiep

Daten haben "Schwerkraft" (Data Gravity). Je mehr Daten Sie in AWS S3 speichern, desto schwerer (und teurer) wird es, diese wieder herauszuholen. Das liegt nicht an der technischen Schwierigkeit – S3 ist mittlerweile ein offener Industriestandard – sondern an der Angst vor Komplexität und den Egress-Gebühren.

Bei OutaCloud migrieren wir regelmäßig speicherintensive Workloads von AWS zu souveränen Alternativen. In diesem Guide öffnen wir unser Playbook: Wir zeigen, welche Tools wir nutzen, wie wir die Zielarchitektur (Hetzner vs. Ceph) wählen und wie der technische Migrationsprozess Schritt für Schritt abläuft.

Inhaltsverzeichnis

1) Architektur-Entscheidung: Wohin mit den Daten?

Bevor wir Daten kopieren, müssen wir das Ziel definieren. Im Proxmox/Bare-Metal-Umfeld haben sich zwei Ziele als Standards etabliert:

A) Hetzner Object Storage (Cold/Warm Data)

Ideal für Backups, Archive, User-Uploads oder statische Web-Assets, die über ein CDN ausgeliefert werden.

  • Technik: MinIO-basiertes Backend, von Hetzner verwaltet.
  • Vorteil: Unschlagbar günstig, Traffic im Hetzner-Netz kostenlos, keine Wartung.
  • Nachteil: Latenz (Netzwerk-Roundtrip), Shared Infrastructure.

B) Ceph RGW auf Proxmox (Hot Data / High Performance)

Ideal für Applikationen, die hohe I/O-Lasten erzeugen oder Daten in Echtzeit verarbeiten müssen.

  • Technik: Wir aktivieren das Rados Gateway (RGW) auf Ihrem Proxmox Ceph-Cluster.
  • Vorteil: Die Daten liegen auf denselben NVMe-SSDs wie Ihre VMs. 0ms externe Latenz, maximale Durchsatzrate, volle Datenhoheit.

Warum Ceph RGW statt MinIO? MinIO hat seine Lizenzpolitik geändert und den Fokus verschoben. Ceph RGW ist tief in Proxmox integriert, Open Source und der Goldstandard für Enterprise-Storage.

2) Die Waffenwahl: rclone ist der Standard

Vergessen Sie selbstgeschriebene Python-Scripte oder die AWS CLI (aws s3 sync) für große Migrationen. Das Werkzeug der Wahl ist rclone.

Warum rclone?

  • Multithreading: Kann tausende Objekte parallel übertragen.
  • Checksummen: Garantiert Datenintegrität (MD5/SHA1 Verifikation).
  • Throttling: Mit --bwlimit verhindern wir, dass die Migration Ihre Produktion lahmlegt.
  • Provider-Agnostisch: Spricht perfekt AWS S3, Ceph und Hetzner.

3) Step-by-Step Guide: Die Migration

Hinweis: Dieser Guide geht von einer Migration mittels rclone auf einer Linux-Jump-Host oder direkt auf einem Proxmox-Node aus.

Schritt 1: Konfiguration der Remotes

Wir definieren Quelle (AWS) und Ziel (Hetzner/Ceph) in der ~/.config/rclone/rclone.conf.

# rclone config (Interaktiver Modus oder direktes Editieren)

[aws-source]
type = s3
provider = AWS
access_key_id = AKIA...
secret_access_key = ...
region = eu-central-1

[hetzner-dest]
type = s3
provider = Other
env_auth = false
access_key_id = ...
secret_access_key = ...
endpoint = https://fsn1.your-objectstorage.com

Schritt 2: Der "Dry Run" (Sicherheitstest)

Bevor wir Terabytes bewegen, testen wir Konnektivität und Berechtigungen.

rclone sync aws-source:my-production-bucket hetzner-dest:new-bucket \
  --dry-run \
  --verbose

Check: Werden die Dateien korrekt aufgelistet? Stimmen die Pfade?

Schritt 3: Der Initial Sync (Bulk Copy)

Jetzt bewegen wir die Masse der Daten. Da dies Tage dauern kann, lassen wir diesen Prozess im Hintergrund (z.B. in tmux oder screen) laufen.

rclone sync aws-source:my-production-bucket hetzner-dest:new-bucket \
  --progress \
  --transfers 64 \
  --checkers 64 \
  --bwlimit 50M \
  --update \
  --fast-list

Erklärung der Flags:

  • --transfers 64: Kopiert 64 Dateien gleichzeitig (wichtig bei vielen kleinen Dateien).
  • --bwlimit 50M: Begrenzt Bandbreite auf 50 MB/s, um den laufenden Betrieb nicht zu stören.
  • --update: Überspringt Dateien, die am Ziel schon neuer existieren.
  • --fast-list: Nutzt mehr RAM, um API-Requests (und damit AWS-Kosten) zu sparen.

Schritt 4: Die Delta-Syncs (Catch-up)

Während der Initial Sync lief, haben Ihre User neue Dateien auf AWS hochgeladen. Wir lassen den Befehl nun erneut laufen (ohne Bandbreitenlimit).

rclone sync aws-source:my-bucket hetzner-dest:new-bucket \
  --transfers 128 \
  --checkers 128

Rclone vergleicht Mod-Times und Checksummen und überträgt nur die Differenz.

Schritt 5: Der Cutover (Die Umstellung)

Das ist der kritische Moment für Ihre Applikation.

  1. Maintenance Mode: Schalten Sie die App in den Wartungsmodus oder "Read-Only".
  2. Finaler Sync: Ein letzter rclone sync, der jetzt nur Sekunden dauern sollte.
  3. Config Switch: Ändern Sie die Environment-Variablen Ihrer App.
    • Alt: S3_ENDPOINT=s3.eu-central-1.amazonaws.com
    • Neu: S3_ENDPOINT=https://fsn1.your-objectstorage.com (oder interne Ceph IP)
  4. Deployment: App neu starten.
  5. Verifikation: Test-Upload durchführen.

4) Datenintegrität & Validierung

Vertrauen ist gut, Hashes sind besser. Nach der Migration sollten Sie stichprobenartig oder vollständig prüfen.

Der Full Check (Dauert lange, kostet API-Calls):

rclone check aws-source:my-bucket hetzner-dest:new-bucket --one-way

Dies vergleicht MD5-Hashes aller Objekte, ohne Daten herunterzuladen.

Achtung: Bei AWS Multipart-Uploads stimmt der ETag (MD5) manchmal nicht mit Standard-MD5 überein. Rclone erkennt das meistens, aber man sollte sich dessen bewusst sein.

5) Häufige Fallstricke (Lessons Learned)

Aus unserer Erfahrung mit diversen Migrationen:

Die "Exit-Tax" (Egress)

AWS berechnet ~$0.09 pro GB für ausgehenden Traffic. Bei 50 TB Daten kostet allein der Transfer 4.500 USD. Das ist schmerzhaft, aber eine einmalige Gebühr ("Lösegeld"). Danach sind Ihre Traffic-Kosten bei Hetzner/OutaCloud nahe Null.

ACLs & Public Buckets

AWS hat komplexe Access Control Lists (ACLs). Hetzner und Ceph nutzen einfachere Modelle oder S3 Bucket Policies. Prüfen Sie, ob Ihre Dateien "public-read" sein müssen und setzen Sie die Policy im neuen Bucket bevor Sie live gehen.

Presigned URLs

Nutzt Ihre App temporäre Upload-Links? Stellen Sie sicher, dass Ihre S3-Library (AWS SDK) den neuen Endpoint korrekt signiert (meist s3ForcePathStyle: true setzen).

Fazit: Komplexität managen lassen

Ein S3-Exit ist technisch kein Hexenwerk, erfordert aber Präzision bei der Planung, um Datenverlust und Downtime zu vermeiden. Die Kombination aus rclone und Zielen wie Hetzner oder Ceph RGW ist mächtig und befreit Sie dauerhaft von unkalkulierbaren Storage-Kosten.

Wenn du AWS verlassen willst, aber nicht auf Datenintegrität verzichten möchtest, ist ein strukturierter Migrationsansatz der sicherste Weg.


Sie wollen das nicht selbst machen?

Bei OutaCloud übernehmen wir die komplette Migration für Sie. Wir analysieren Ihre Buckets, berechnen die Egress-Kosten vorab und führen den Sync im Managed Service durch.

Starte hier:

Oder kontaktiere uns direkt für eine kostenlose Migrations-Analyse.

Cloud Migration Service

Raus aus der Cloud-Kostenfalle - bis zu 90% Ersparnis.

Kostenlose Analyse
Migrations-Strategie
Lift & Shift Durchführung
Managed Hosting
AWS S3 Exit Guide: Migration zu Hetzner Object Storage & Ceph RGW (rclone Tutorial) | OutaCloud Blog