Backup erstellen (Ubuntu 16.04/Debian 8 LAMP)

Backup erstellen mit LAMP

TITEL

    Um ein Backup deines Root-Servers zu erstellen, logge dich zuerst als Root ein. Hast du dort bereits Apache2, MySQL und PHP (LAMP) installiert? Wunderbar, dann brauchst du nur noch:

    apt-get install sshfs
    apt-get install rsync
    apt-get install percona-toolkit

    Nun lege einzelne Ordner an – für dein Backup, die Logs und Scripte.

    Ordner für Backup:

    mkdir /mnt/backup/

    Ordner, in den Backup-Space gemountet wird:

    mkdir /mnt/backup_ftp/

    Ordner für Logs:

    mkdir /var/log/backup/

    Ordner für Scripte:

    mkdir /root/scripte/

    Erstelle im nächsten Schritt die Skripte für das Backup und mach diese ausführbar:

    Datei „mypasswordfile.sh:

    vim /root/scripte/mypasswordfile.sh

    Inhalt einfügen & speichern:

    #!/bin/bash echo 'mysql_password'

    Bitte ersetze „mysql_password“ mit deinem MySQL Passwort.

    Datei ausführbar machen:

    chmod +x /root/scripte/mypasswordfile.sh

    In dieser Datei steckt dein MySQL Passwort. Dieses benötigst du, um später den MySQL-Dump zu erstellen.

    Datei „sftpbackup.batch“:

    vim /root/scripte/sftpbackup.batch

    Inhalt einfügen & speichern:

    put /mnt/full_backup.tar.gz /backup_ftp/
    exit

    Datei ausführbar machen:

    chmod +x /root/scripte/sftpbackup.batch

    Mit dieser Datei kannst du dein neues Backup auf einen externen Backup-Space verschieben.

    Datei „backupscript.sh“:

    vim /root/scripte/backupscript.sh

    Inhalt einfügen & speichern:

    #!/bin/bash
    ERRORLOG="/var/log/backup/full_backup.err"
    INFOLOG="/var/log/backup/full_backup.log"
    BACKUPPATH="/mnt/backup/"
    #SERVERNAME_VROOT="vrxxxxx@backup.myvrootserver.com:/"
    #SERVERNAME_DROOT="drxxxxx@backup.mydrootserver.com:/"
    
    DATE=$(date +%Y%m%d-%H:%M:%S);
    echo "${DATE} - Backup start" >> ${INFOLOG};
    
    rsync -aAXz --numeric-ids --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / ${BACKUPPATH} 1>/dev/null 2>> ${ERRORLOG}
    if [[ $? == 0 ]]; then
      DATE=$(date +%Y%m%d-%H:%M:%S);
      echo "${DATE} - local rsync success" >> ${INFOLOG};
    else
      DATE=$(date +%Y%m%d-%H:%M:%S);
      echo "${DATE} - local rsync failed" >> ${INFOLOG};
    fi
    
    DATABASES=$(mysql -ss -uroot -p$(/root/scripte/mypasswordfile.sh) -e "SHOW DATABASES;" 2> /dev/null)
    if [[ $? == 0 ]]; then
      # create dump dir if not exist
      if [[ ! -d ${BACKUPPATH}var/lib/mysql/dbdumps ]]
      then
         mkdir ${BACKUPPATH}var/lib/mysql/dbdumps/ 1>/dev/null 2>> ${ERRORLOG};
      fi
      # dump all databases
      for DB in ${DATABASES}; do
         mysqldump -uroot -p"$(/root/scripte/mypasswordfile.sh)" --databases ${DB} > ${BACKUPPATH}var/lib/mysql/dbdumps/${DB}.sql 2>> ${ERRORLOG};
      done
      #dump grants with recovery friendly preformatted pt output
      pt-show-grants -uroot -p"$(/root/scripte/mypasswordfile.sh)" > ${BACKUPPATH}/var/lib/mysql/dbdumps/GRANTS.sql 2>> ${ERRORLOG};
    fi
    
    tar -czf /mnt/full_backup.tar.gz /mnt/backup/ 2>> ${ERRORLOG}
    if [[ $? == 0 ]]; then
      sftp -i /root/.ssh/id_rsa -b /root/scripte/sftpbackup.batch ${SERVERNAME_VROOT} 1>/dev/null 2>> ${ERRORLOG};
    fi
    
    if [[ $? != 0 ]]; then
      DATE=$(date +%Y%m%d-%H:%M:%S);
      echo "${DATE} - Backup failed. Last error code: $?" >> ${INFOLOG};
    else
      DATE=$(date +%Y%m%d-%H:%M:%S)
      echo "${DATE} - Backup finish" >> ${INFOLOG};
    fi

    Datei ausführbar & mountbar machen:

    chmod +x /root/scripte/backupscript.sh

    Mit dieser Datei erstellst du dein Backup.

    Für welchen Dedicated Rootserver oder Virtual Root Server möchtest du das Backup erstellen? Passe hierzu die Zeilen entsprechend an und entferne die „#“.

    Datei „backupscript.sh“ öffnen:

    vim /root/scripte/backupscript.sh

    Datei „backupscript.sh“ bearbeiten:

    SERVERNAME_VROOT="vr12345@backup.myvrootserver.com:/"
    #SERVERNAME_DROOT="drxxxxx@backup.mydrootserver.com:/"

    Welche Verzeichnisse oder Dateien möchtest du bei deinem Backup ausschließen? Automatisch eingestellt sind:

    /dev
    /proc
    /sys
    /tmp
    /run
    /mnt
    /media
    /lost+found

    Du möchtest diese Liste ändern oder erweitern? Das erledigst du ganz leicht über die Zeile exclude. Alle hier nicht genannten Verzeichnisse und Dateien landen in deinem Backup. Auch Dumps von allen Datenbanken.

    Damit du beim Übertragen deines Backups über FTP auf das Passwort verzichten kannst, brauchst du noch den passenden Schlüssel. Erstell diesen mit „ssh-keygen“ und übertrage ihn dann auf den Backup-Server.

    Ein Tipp: Bestätige einfach alle Aufforderungen mit „Enter“ – das reicht aus.

    Schlüssel erstellen:

    ssh-keygen -b 4096

    Backup-Space mounten:

    sshfs vrxxxxx@backup.myvrootserver.com:/ /mnt/backup_ftp/

    Passwort für FTP-Backup-Space eingeben.

    Und falls du dein Passwort vergessen hast: Kundencenter > Administration > Backup > Passwort ändern.

    Schlüssel kopieren und einfügen:

    cat /root/.ssh/id_rsa.pub > /mnt/backup_ftp/.ssh/authorized_keys

    Nun kannst du den FTP-Backup-Space in deinem Filesystem einbinden – es funktioniert jetzt ohne Passwort. Du möchtest dies einmal testen? Das geht so:

    1. Hänge den FTP-Backup-Space aus:

    fusermount -u /mnt/backup_ftp

    2. Hänge den FTP-Backup-Space wieder ein:

    sshfs vrxxxxx@backup.myvrootserver.com:/ /mnt/backup_ftp/

    Und direkt ein zweiter Test – für Ihr Backup. Führen Sie dazu folgendes Skript aus:

    /root/scripte/backupscript.sh

    Funktioniert alles wie gewünscht? Sehr gut, dann weiter zum nächsten Schritt.

    Damit Ihr Backup künftig auch automatisch startet, erstellen Sie nun einen Cronjob.

    Datei anlegen und bearbeiten:

    vim /etc/cron.d/backup

    Folgende Zeile einfügen und speichern:

    30 3 * * * root /root/scripte/mypasswordfile.sh

    So startet Ihr Backup täglich um 03:30 Uhr – oder geben Sie einfach am Anfang der Zeile Ihre persönliche Wunschzeit ein.

  • vorherige
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • nächste

Backup wiederherstellen mit LAMP

Dein Server hatte einen Ausfall und du benötigst dein Backup? Gerne – so funktioniert es:

TITEL

    Schritt 1

    Logge dich zuerst als Root ein. Du hast dort bereits Apache2, MySQL und PHP (LAMP) installiert? Wunderbar, dann brauchst du nur noch:

    apt-get install sshfs
    apt-get install rsync

    Lege nun die erforderlichen Datenbanken und MySQL-Benutzer an. Wichtig hierbei: Nutze den gleichen Datenbank- und Benutzernamen wie auf deinem ausgefallenen System.

    MySQL starten und das MySQL Passwort eingeben:

    mysql -u root -p

    Datenbank anlegen:

    create database if not exists datenbank1;
    create database if not exists datenbank2;
    create database if not exists datenbank3;
    …

    Benutzer erstellen:

    create user 'benutzer'@'localhost' identified by 'pw_fuer_benutzer';

    Berechtigung für den Benutzer anlegen:

    grant all privileges on datenbank1.* to 'benutzer'@'localhost';
    grant all privileges on datenbank2.* to 'benutzer'@'localhost';
    grant all privileges on datenbank3.* to 'benutzer'@'localhost';
    …
    flush privileges;

    Abmelden:

    quit;

    Wohin soll dein Backup gemountet werden? Erstell dazu einen beliebigen neuen Ordner – zum Beispiel „/mnt“:

    mkdir /mnt/backup_ftp

    Verbinde nun den FTP-Backup-Space mit deinem neuen Ordner:

    sshfs vrxxxxx@backup.myvrootserver.com:/backup /mnt/backup_ftp

    Gib dann das Passwort für deinen FTP-Backup-Space ein. Falls du es vergessen hast: Kundencenter > Administration > Backup > Passwort ändern.

    Jetzt kannst du dein Backup auf den Server kopieren und entpacken:

    mkdir /mnt/backup
    cp -r /mnt/backup_ftp/* /mnt/backup
    cd /mnt/backup
    tar -xvzf full_backup.tar.gz

    Damit du sicher sein kannst, dass es vollständig ist, lohnt sich ein prüfender Blick auf dein Backup samt MySQL-Dumps:

    cd /mnt/backup/mnt/backup

    Ist alles okay? Dann stelle jetzt deine Dateien wieder her – zum Beispiel mit „Rsync“:

    rsync –delete -av <Quelle> <Ziel>

    Du möchtest dein CMS wiederherstellen – zum Beispiel Wordpress? Das erledige es mit dem Inhalt der Datei „var/www/html/“:

    rsync --delete -av /mnt/backup/mnt/backup/var/www/html/ /var/www/html/

    Der letzte Schritt holt deine MySQL-Dumps wieder an Bord:

    mysql --host=localhost --user=user --password=passwort -vvf datenbank1 < /mnt/backup/mnt/backup/var/lib/mysql/dbdumps/datenbank1.sql

    Jetzt sollte alles wieder perfekt laufen. Du möchtest weitere individuelle Ordner oder Dateien übertragen? Auch das erledigst du mit „Rsync“ schnell und bequem.

  • vorherige
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • nächste
War diese Antwort hilfreich?