Backup erstellen (Ubuntu 16.04/Debian 8 LAMP)

Backup erstellen mit LAMP

TITEL

    Um ein Backup Ihres Root-Servers zu erstellen, loggen Sie sich zuerst als Root ein. Haben Sie dort bereits Apache2, MySQL und PHP (LAMP) installiert? Wunderbar, dann brauchen Sie nur noch:

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

    Legen Sie nun einzelne Ordner an – für Ihr Backup, die Logs und Scripte.

    Ordner für Backup:

    mkdir /mnt/backup/

    Ordner, in den Ihr Backup-Space gemountet wird:

    mkdir /mnt/backup_ftp/

    Ordner für Logs:

    mkdir /var/log/backup/

    Ordner für Scripte:

    mkdir /root/scripte/

    Erstellen Sie im nächsten Schritt die Skripte für das Backup und machen Sie diese ausführbar:

    Datei „mypasswordfile.sh:

    vim /root/scripte/mypasswordfile.sh

    Inhalt einfügen & speichern:

    #!/bin/bash echo 'mysql_password'

    Bitte ersetzen Sie „mysql_password“ mit Ihrem MySQL Passwort.

    Datei ausführbar machen:

    chmod +x /root/scripte/mypasswordfile.sh

    In dieser Datei steckt Ihr MySQL Passwort. Dieses benötigen Sie, 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 können Sie Ihr neues Backup auf Ihren 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 erstellen Sie Ihr Backup.

    Für welchen Dedicated Rootserver oder Virtual Root Server möchten Sie das Backup erstellen? Passen Sie hierzu die Zeilen entsprechend an und entfernen Sie 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öchten Sie bei Ihrem Backup ausschließen? Automatisch eingestellt sind:

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

    Sie wollen diese Liste ändern oder erweitern? Das erledigen Sie ganz leicht über die Zeile exclude. Alle hier nicht genannten Verzeichnisse und Dateien landen in Ihrem Backup. Auch Dumps von allen Datenbanken.

    Damit Sie beim Übertragen Ihres Backups über FTP auf Ihr Passwort verzichten können, brauchen Sie noch den passenden Schlüssel. Erstellen Sie diesen mit „ssh-keygen“ und übertragen Sie ihn dann auf den Backup-Server.

    Ein Tipp: Bestätigen Sie 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 Sie Ihr Passwort vergessen haben: Kundencenter > Administration > Backup > Passwort ändern.

    Schlüssel kopieren und einfügen:

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

    Nun können Sie Ihr FTP-Backup-Space in Ihr Filesystem einbinden – es funktioniert jetzt ohne Passwort. Sie möchten dies einmal testen? Das geht so:

    1. Hängen Sie den FTP-Backup-Space aus:

    fusermount -u /mnt/backup_ftp

    2. Hängen Sie 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

Ihr Server hatte einen Ausfall und Sie benötigen Ihr Backup? Gerne – so funktioniert es:

TITEL

    Schritt 1

    Loggen Sie sich zuerst als Root ein. Haben Sie dort bereits Apache2, MySQL und PHP (LAMP) installiert? Wunderbar, dann brauchen Sie nur noch:

    apt-get install sshfs
    apt-get install rsync

    Legen Sie nun die erforderlichen Datenbanken und Ihren MySQL-Benutzer an. Wichtig hierbei: Nutzen Sie den gleichen Datenbank- und Benutzernamen wie auf Ihrem 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 Ihr Backup gemountet werden? Erstellen Sie dazu einen beliebigen neuen Ordner – zum Beispiel „/mnt“:

    mkdir /mnt/backup_ftp

    Verbinden Sie nun den FTP-Backup-Space mit Ihrem neuen Ordner:

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

    Geben Sie dann das Passwort für Ihren FTP-Backup-Space ein. Falls Sie es vergessen haben: Kundencenter > Administration > Backup > Passwort ändern.

    Jetzt können Sie Ihr 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 Sie sicher sein können, dass es vollständig ist, lohnt sich ein prüfender Blick auf Ihr Backup samt MySQL-Dumps:

    cd /mnt/backup/mnt/backup

    Ist alles okay? Dann stellen Sie jetzt Ihre Dateien wieder her – zum Beispiel mit „Rsync“:

    rsync –delete -av <Quelle> <Ziel>

    Sie möchten Ihr CMS wiederherstellen – zum Beispiel Wordpress? Das erledigen Sie 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 Ihre 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. Sie möchten weitere individuelle Ordner oder Dateien übertragen? Auch das erledigen Sie mit „Rsync“ schnell und bequem.

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