Zurück zum Blog

Server Backup: 3-2-1-Regel und Methoden

Server Backup richtig machen: die 3-2-1-Regel, Snapshot oder Datei-Backup, Datenbank-Backups, verschlüsselte Remote-Backups mit restic und Restore-Tests.

Nodesty-Team6 Min. LesezeitSicherheit
Der Schriftzug Backups mit 3-2-1, Snapshots und Restore auf dunklem Nodesty-Hintergrund

Ein Server Backup bedeutet, regelmäßig eine Kopie der Dateien, Datenbanken und Einstellungen Ihres Servers zu erstellen und an einem anderen Ort aufzubewahren. Ein Festplattenausfall, ein versehentlich gelöschter Ordner, ein fehlerhaftes Update oder ein Ransomware-Angriff kann in wenigen Sekunden die Arbeit von Monaten zunichtemachen. Ein gutes Backup-Konzept bedeutet, dass Sie sich von solchen Situationen in wenigen Minuten erholen.

In dieser Anleitung erklären wir die 3-2-1-Regel, die Arten von Backups, wie Sie Datenbanken richtig sichern, wie Sie mit restic verschlüsselte Remote-Backups erstellen, wie Sie das Ganze automatisieren und den am häufigsten vernachlässigten Schritt: den Restore-Test.

Warum Sie Backups brauchen

Die Ursachen für Datenverlust sind viel alltäglicher, als man denkt:

  • Menschliche Fehler: Ein rm -rf im falschen Ordner, eine versehentlich gelöschte Tabelle oder eine überschriebene Konfigurationsdatei. Das ist die häufigste Ursache.
  • Fehlerhafte Updates: Ein Update eines Plugins, Mods oder einer Software kann die Datenbank beschädigen.
  • Angriffe: Auf einem übernommenen Server löschen Angreifer Daten oder verschlüsseln sie mit Ransomware.
  • Hardwareausfall: Festplatten können selbst in den besten Rechenzentren kaputtgehen.
  • Kontoprobleme: Wegen eines Zahlungsproblems oder eines verlorenen Zugangs nicht mehr an Ihren Server zu kommen.

Gegen die meisten dieser Ursachen hilft, egal wie zuverlässig die Hardware des Anbieters ist, nur eines: Die Daten müssen auch an einem anderen Ort liegen.

Die 3-2-1-Backup-Regel

Die am weitesten anerkannte Regel für Backups ist einfach:

  • 3 Kopien: die Originaldaten und zwei Backups.
  • 2 verschiedene Medien: zum Beispiel die eigene Festplatte des Servers und ein separater Speicher.
  • 1 Kopie an einem anderen Ort: in einem anderen Rechenzentrum oder bei einem anderen Anbieter.

Für einen Server bedeutet das in der Praxis: Ihre Originaldaten liegen auf dem Server, die automatischen Backups Ihres Anbieters bilden die zweite Kopie und die verschlüsselten Backups, die Sie an einen anderen Anbieter senden, die dritte. Heute wird diese Regel oft um eine weitere Bedingung ergänzt: Mindestens eine der Kopien sollte unveränderlich (immutable) sein oder sich vom Server aus nicht löschen lassen; so kann ein Angreifer, der den Server übernimmt, nicht auch die Backups löschen.

Arten von Backups

ArtWas wird gesichert?VorteilNachteil
Server-Backup / SnapshotDie gesamte FestplatteStellt den ganzen Server in einem Schritt wieder herEinzelne Dateien zurückzuholen ist aufwendiger
Datei-BackupAusgewählte OrdnerFlexibel, klein, einzelne Dateien wiederherstellbarSie müssen selbst auswählen, was gesichert wird
Datenbank-DumpEine konsistente Kopie der DatenbankKonsistent, portabelUmfasst nur die Datenbank

Am robustesten ist es, diese Arten zu kombinieren: Das Server-Backup des Anbieters ermöglicht eine schnelle Wiederherstellung im Katastrophenfall; Datei- und Datenbank-Backups geben Ihnen die Flexibilität, eine einzelne Datei oder Tabelle zurückzuholen und auf einen anderen Server umzuziehen.

Was sollten Sie sichern?

  • Anwendungs- und Website-Dateien: /var/www, Gameserver-Ordner, Bot-Code und von Benutzern hochgeladene Inhalte.
  • Datenbanken: nicht als Dateikopie, sondern als Dump, der mit dem eigenen Tool der Datenbank erstellt wurde.
  • Konfigurationsdateien: Nginx-, Dienst- und Firewall-Einstellungen unter /etc; .env-Dateien; die Ausgabe von crontab -l.
  • Docker-Daten: Compose-Dateien und Volumes oder eingebundene Ordner.

Das Betriebssystem selbst und Dateien, die sich erneut herunterladen lassen (zum Beispiel die mit SteamCMD heruntergeladenen Dateien eines Gameservers), müssen Sie nicht ins Datei-Backup aufnehmen; wichtig sind nur die Daten und Einstellungen, die Sie selbst erstellt haben.

Datenbanken richtig sichern

Die Dateien einer laufenden Datenbank zu kopieren, kann zu einem Backup führen, das sich nicht öffnen lässt. Erstellen Sie zuerst mit dem eigenen Tool der Datenbank einen Dump und nehmen Sie diesen Dump dann in Ihr Datei-Backup auf:

mariadb-dump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz

Wenn Sie PostgreSQL verwenden, übernimmt pg_dump dieselbe Aufgabe. Installation und Backup von MariaDB erklären wir ausführlich in unserer Anleitung MariaDB installieren.

Verschlüsselte Remote-Backups mit restic

restic ist ein quelloffenes, kostenloses Backup-Tool. Es verschlüsselt Backups, speichert wiederkehrende Daten nur einmal (Deduplizierung) und überträgt bei jedem Backup nur die geänderten Teile. Die Backups kann es per SFTP an einen anderen Server oder an einen S3-kompatiblen Objektspeicher senden.

  1. Installieren Sie restic:
    sudo apt install restic
    
  2. Schreiben Sie das Verschlüsselungspasswort in eine Datei und schützen Sie sie so, dass nur root sie lesen kann:
    sudo sh -c 'openssl rand -base64 32 > /root/.restic-passwort'
    sudo chmod 600 /root/.restic-passwort
    

    Bewahren Sie dieses Passwort zusätzlich an einem sicheren Ort auf. Ohne das Passwort lassen sich die Backups nicht öffnen.
  3. Legen Sie auf einem anderen Server das Backup-Repository an. Zum Beispiel per SFTP:
    sudo restic -r sftp:backup@198.51.100.20:/srv/restic init --password-file /root/.restic-passwort
    
  4. Erstellen Sie das erste Backup:
    sudo restic -r sftp:backup@198.51.100.20:/srv/restic --password-file /root/.restic-passwort \
      backup /var/www /etc /var/backups
    
  5. Räumen Sie alte Backups nach einem Aufbewahrungsschema auf:
    sudo restic -r sftp:backup@198.51.100.20:/srv/restic --password-file /root/.restic-passwort \
      forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
    

Dieses Schema behält je ein Backup der letzten 7 Tage, der letzten 4 Wochen und der letzten 6 Monate. Für die SFTP-Verbindung muss sich Ihr Server ohne Passwort, per Schlüssel, mit dem Backup-Server verbinden können; wie Sie einen SSH-Schlüssel erzeugen, erklären wir in Was ist SSH?

Backups automatisieren

Ein manuelles Backup wird irgendwann garantiert vergessen. Fassen Sie die Schritte in einem Skript zusammen, zum Beispiel /root/backup.sh:

#!/bin/sh
set -e
REPO="sftp:backup@198.51.100.20:/srv/restic"
PASS="/root/.restic-passwort"

mariadb-dump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic -r "$REPO" --password-file "$PASS" backup /var/www /etc /var/backups
restic -r "$REPO" --password-file "$PASS" forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Machen Sie das Skript ausführbar und lassen Sie es mit sudo crontab -e jede Nacht laufen:

30 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1

Prüfen Sie die Logdatei hin und wieder oder nutzen Sie einen Monitoring-Dienst, der Sie benachrichtigt, wenn ein Backup fehlschlägt. Ein Backup, das unbemerkt fehlschlägt, ist so gut wie gar kein Backup.

Testen Sie die Wiederherstellung

Ein ungetestetes Backup ist ein Backup, von dem Sie nicht wissen, ob es wirklich funktioniert. Führen Sie einmal im Monat diese Prüfungen durch:

  • Backups auflisten: Prüfen Sie mit restic snapshots, dass die Backups regelmäßig erstellt werden.
  • Eine Datei wiederherstellen: Holen Sie mit restic restore latest --target /tmp/test --include /var/www/site/index.php eine einzelne Datei zurück und prüfen Sie ihren Inhalt.
  • Datenbank-Dump testen: Spielen Sie den Dump testweise in eine separate Datenbank ein und prüfen Sie, ob die Tabellen vorhanden sind.
  • Integrität prüfen: restic check bestätigt, dass das Repository intakt ist.

Noch besser: Versuchen Sie ein paarmal im Jahr, alles von Grund auf auf einem leeren Server wiederherzustellen. Nur so erfahren Sie, wie schnell Sie im echten Katastrophenfall wieder online sind.

Backups bei Nodesty

Die AMD Ryzen 9 9950X vServer- und EPYC-vServer-Pakete von Nodesty enthalten kostenlose automatische tägliche Backups mit 7 Tagen Aufbewahrung, die Sie im Panel ein- und ausschalten können. In den Webhosting-Paketen erreichen Sie Ihre Backups mit JetBackup über das Control Panel; auch bei Gameservern werden tägliche Backups 7 Tage lang aufbewahrt. Diese Backups bilden die zweite Kopie der 3-2-1-Regel. Für Ihre wichtigen Daten empfehlen wir, wie in dieser Anleitung beschrieben, zusätzlich eine unabhängige Kopie an einem anderen Ort aufzubewahren.

Häufig gestellte Fragen

Reichen die Backups des Anbieters nicht aus?

Die Backups des Anbieters sind gegen Hardwareausfälle und versehentliche Änderungen sehr wertvoll, sollten aber nicht Ihr einziges Backup sein. Für Fälle wie den Verlust des Zugangs zu Ihrem Konto, ein Problem, das Sie erst nach Ablauf der Aufbewahrungsfrist bemerken, oder einen Angreifer, der mit dem Server auch die Backups erreicht, brauchen Sie eine vom Anbieter unabhängige Kopie.

Wie oft sollte ich ein Backup erstellen?

Entscheiden Sie danach, welchen Zeitraum Sie höchstens verlieren können. Für eine E-Commerce-Datenbank, die sich im Laufe des Tages häufig ändert, kann ein stündliches Backup nötig sein; für eine Unternehmenswebsite, die einmal pro Woche aktualisiert wird, reicht ein tägliches Backup völlig aus. Bei Gameservern sind tägliche Backups plus ein manuelles Backup vor großen Updates ein guter Kompromiss.

Wie lange sollte ich Backups aufbewahren?

Wer nur die letzten paar Tage aufbewahrt, ist gegen spät bemerkte Probleme nicht geschützt. Ein verbreitetes Schema ist, die Backups der letzten 7 Tage, je ein Backup der letzten 4 Wochen und je eins der letzten Monate aufzubewahren. Tools wie restic setzen dieses Schema mit einem einzigen Befehl um.

Ersetzt RAID ein Backup?

Nein. RAID sorgt dafür, dass der Server weiterläuft, wenn eine Festplatte ausfällt. Eine gelöschte Datei, eine beschädigte Datenbank oder von Ransomware verschlüsselte Daten landen jedoch gleichzeitig auf allen Festplatten. RAID dient dem unterbrechungsfreien Betrieb, ein Backup dagegen dem Zurückkehren zu einem früheren Stand.

Reicht es, die Dateien einer laufenden Datenbank zu kopieren?

In der Regel nicht. Kopiert man die Dateien, während die Datenbank läuft, kann ein inkonsistentes Backup entstehen, das sich nicht öffnen lässt. Erstellen Sie mit den eigenen Tools der Datenbank wie mariadb-dump oder pg_dump einen Dump und nehmen Sie diesen Dump in Ihr Datei-Backup auf.

Muss ich meine Backups verschlüsseln?

Backups enthalten sensible Informationen wie Kundendaten, Passwörter und API-Schlüssel. Verschlüsseln Sie Backups, die bei einem anderen Anbieter oder in einem Cloud-Speicher liegen, unbedingt. Tools wie restic und Borg verschlüsseln Backups standardmäßig; bewahren Sie auch das Verschlüsselungspasswort getrennt von den Backups an einem sicheren Ort auf.

Nodesty

Über den Autor

Nodesty-Team · Infrastruktur und Support

Das Nodesty-Team betreibt unsere Server, unser Netzwerk und unseren DDoS-Schutz im Alltag und beantwortet Support-Anfragen rund um die Uhr. Diese Ratgeber entstehen aus dieser Arbeit.

Verwandte Artikel

Starte deinen Server jetzt.

Erstellen, wachsen und skalieren Sie Ihre Projekte grenzenlos auf der Premium-Infrastruktur von Nodesty.

                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                                                                                                                            
                                                                                                                             ············································                                                   
                                                ··································································································..........···························                                     
                                       ················..........................................................................................................................··············                             
                                  ·············.................::::::::::::::::::::::::::::::::::::::::::::::....................:::::::::::::::::::::::::::::::::::::::................···········                        
                             ············................:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::............·········                     
                         ············.................:::::::::::::::::::::::::::::::::::::::::::::::::::------------::::::::::::::::::::::::::::::----------------:::::::::::::::::::::..........········                  
                    ············......................::::::::::::::::::::::::::::::::::::------------------------------------------------------------------------------------:::::::::::::.........········                
                ··········.............................................::::::::::::::::::-------------==========================================-----------------------------------:::::::::::........·······               
             ········..................:.....................................::::::::::--------=======+++++++++++++++++++++++++++++++++++++=========================------------------::::::::::.......·······              
           ······.........::::::::::::::::::::................................:::::::-----=====++++xxxxxx**************************xxxxxxxxx++++++++++++++===================------------::::::::.......·······             
          ·····.......:::::::::::::::::::::::::::.............................:::::----===+++xxx****%%%%&&&&&&#############&&&&&&&%%%%%*******xxxxxxxx++++++++++++++==============----------:::::::......······             
         ····......::::::::-------------:::::::::::..........................::::---===+++xx***%%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@####&&&&&%%%%*******xxxxxxxxx+++++++++++++===========--------::::::......·····             
        ····.....:::::::--------------------:::::::::.......................::::---===++xxx**%%&&&###@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&%%%%%********xxxxxxxxxxx++++++++++++========------::::::.....······            
        ····.....:::::--------------------------::::::::....................::::---===++xx***%%&&&####@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###&&&&&%%%%%**********xxxxxxxxxxxxx+++++++++=======------:::::.....·····            
        ····....::::::-------=============---------:::::::::................:::::---===+++xx***%%%&&&#####@@@@@@@@@@@@@@@@@@@@@@@@@#####&&&&&%%%%%%*************xxxxxxxxxxxxxx+++++++++======-----:::::....·····            
         ····....:::::-------================---------:::::::::...............:::::----===++++xxx***%%%%&&&&&&#################&&&&&&%%%%%%%*******************xxxxxxxxxxxxxxxxx++++++++======----:::::....·····            
         ·····....:::::--------=================---------::::::::::..............:::::::-----====+++++xxxxxx**************************xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx++++++++=====-----::::....·····            
          ·····.....:::::--------=================----------:::::::::::.................:::::::::-------=============++++++++++++++++++++++++++++++++++++xxxxxxxxxxxxxxxxxxxxxxx++++++++======-----::::....·····            
            ·····.....:::::::----------===========-------------::::::::::::.........................::::::::::::::::::------------------=============+++++++++++++++++++++++++++++++++=======-----::::.....·····            
              ······......:::::::---------------------------------:::::::::::::........................................:::::::::::::::-----------============+++++++++++++++++++++========------:::::.....·····             
                 ······........:::::::::---------------------------:::::::::::::::::...........................................:::::::::::::------------=============================--------::::::.....······              
                    ·········.........:::::::::::::::-------------::::::::::::::::::::::::.......................................::::::::::::::::--------------------------------------::::::::......·······                
                          ··········............::::::::::::::::::::::::::::::::::::::::::::::::::................................::::::::::::::::::::::::::-------------:::::::::::::::.........········                   
                                  ············..................:::::::::::::::::::::::::::::::::::::::::::.........................:::::::::::::::::::::::::::::::::::::................···········                        
                                             ················.............................................................................................................·················                                 
                                                           ······················................................................................···························                                                
                                                                               ·········································································