There was a problem loading the comments.

Wie kann ich eine DNS Zone via cPanel exportieren?

Support Portal  »  FAQ  »  Viewing Article

  Print

cPanel hat keinen Knopf im Webinterface, um eine DNS-Zone als Datei zu exportieren. Mit dem eingebauten Terminal und einem kleinen Befehl geht es trotzdem.

 

Voraussetzungen

  • Ein normaler cPanel-Login
  • Zugang zum cPanel-Terminal (im cPanel unter Erweiterte Optionen → Terminal)
  • Alternativ: eine bestehende SSH-Verbindung zum Account, falls vorhanden

Schritt 1: Terminal öffnen

Im cPanel auf Erweiterte Optionen → Terminal klicken (falls die Oberfläche auf Englisch ist: Advanced → Terminal).

 

b68d21e7a34b3b08f33dcc6861b94ca7eb6a6a4015d800b59c230312b53a8f952d587e8dce411843?t=f42424ee1fb296a4c3c833c1eb9ed4ed

 

Beim erstmaligen Öffnen erscheint eine Warnung, dass ein falscher Umgang mit Befehlszeilen-Tools Daten beschädigen kann. Den Hinweis mit Ich bin mir dessen bewusst und möchte fortfahren (bzw. I understand and want to proceed) bestätigen. Anschliessend öffnet sich ein schwarzes Fenster mit einer Eingabezeile.

 

facac4dbcbce48d31463ce26670e949ec7d3d770a290864611bee3a67bd517da1d39001349cfc737?t=24f4d8bed900547c2453cdc2e13aa6ac

 

Schritt 2: Zone exportieren

Folgenden Befehl kopieren und einfügen. Wichtig: DEINEDOMAIN.TLD an beiden Stellen durch deine Domain ersetzen (z.B. meinefirma.ch).

 

uapi --output=json DNS parse_zone zone=DEINEDOMAIN.TLD | python3 -c '
import json, base64, sys
d = json.load(sys.stdin)
for r in d["result"]["data"]:
    if r["type"] in ("comment","control"):
        print(base64.b64decode(r["text_b64"]).decode())
    elif r["type"] == "record":
        parts = [base64.b64decode(x).decode() for x in r["data_b64"]]
        rt, name, ttl = r["record_type"], r["dname_raw"], r["ttl"]
        if rt == "TXT":
            quoted = " ".join("\"%s\"" % p.replace("\\","\\\\").replace("\"","\\\"").replace(";","\\;") for p in parts)
            print("%s\t%d\tIN\tTXT\t%s" % (name, ttl, quoted))
        elif rt == "SOA":
            print("%s\t%d\tIN\tSOA\t%s %s ( %s )" % (name, ttl, parts[0], parts[1], " ".join(parts[2:])))
        else:
            print("%s\t%d\tIN\t%s\t%s" % (name, ttl, rt, " ".join(parts)))
' > ~/DEINEDOMAIN.TLD.db

 

8e616b35203ee569f989f7203be30ae4364386991f581709142b3170895f2be06d6f4c8c1023a752?t=551fb470c5698d40bcb0576a555b216a

 

Der Befehl erzeugt im Home-Verzeichnis eine Datei namens DEINEDOMAIN.TLD.db mit deiner kompletten DNS-Zone im BIND-Format.

 

Schritt 3: Datei prüfen

Kurz anschauen, ob alles drin ist:

cat ~/DEINEDOMAIN.TLD.db

 

Du solltest jetzt alle deine Records sehen (A, AAAA, MX, TXT, CNAME usw.).

 

Schritt 4: Datei herunterladen

Im cPanel den Dateimanager öffnen, ins Home-Verzeichnis wechseln, die .db-Datei markieren und auf Download klicken. Alternativ per FTP/SFTP.

 

d5b57778b240d0feca46f6890128daa09a3ca266b2be65f847bb3a87d0cc564a948dfe182da08845?t=7875892d81a8b264dfa48acef386ff31

 

72f5e3f91944be3410dc7001f109717e101f0e79bdfc6bd943d253a9b1a729ede6111327bbbccc46?t=e97976277103b3d39a73ed7b39ea0043

 

Optional: Konverter als wiederverwendbares Script

Wenn du regelmässig Zonen exportierst, kannst du den Python-Teil einmalig als Datei im Home-Verzeichnis ablegen:

 

cat > ~/zone_convert.py << 'EOF'
import json, base64, sys
d = json.load(sys.stdin)
for r in d['result']['data']:
    if r['type'] in ('comment', 'control'):
        print(base64.b64decode(r['text_b64']).decode())
    elif r['type'] == 'record':
        parts = [base64.b64decode(x).decode() for x in r['data_b64']]
        rt, name, ttl = r['record_type'], r['dname_raw'], r['ttl']
        if rt == 'SOA':
            print(f'{name}\t{ttl}\tIN\tSOA\t{parts[0]} {parts[1]} ( {" ".join(parts[2:])} )')
        elif rt == 'TXT':
            quoted = ' '.join('"%s"' % p.replace('\\', '\\\\').replace('"', '\\"').replace(';', '\\;') for p in parts)
            print(f'{name}\t{ttl}\tIN\tTXT\t{quoted}')
        else:
            print(f'{name}\t{ttl}\tIN\t{rt}\t{" ".join(parts)}')
EOF

 

Danach reicht pro Export ein kürzerer Befehl:

 

uapi --output=json DNS parse_zone zone=DEINEDOMAIN.TLD \
  | python3 ~/zone_convert.py \
  > ~/DEINEDOMAIN.TLD.db

 

Hinweise

  • Falls du den Export nicht selbst machen möchtest, übernehmen wir das gerne kostenpflichtig im Rahmen des Supports. Erstelle dafür bitte ein Ticket über das Kundencenter.
  • Vor einem Import bei einem anderen Provider empfiehlt sich eine Kontrolle der Zonendatei auf Vollständigkeit (alle erwarteten Records vorhanden, SOA/NS korrekt, TXT-Chunks nicht abgeschnitten) sowie auf Kompatibilität mit dem Zielsystem, da nicht jeder Provider jede Zonendatei unverändert akzeptiert.

 


Share via
Did you find this article useful?  

Related Articles

Tags

© NovaTrend Services GmbH