oft reicht ein Backup für Daten, Datenbanken und Konfiguration. Bei Linux liegen diese Informationen an wohlbekannten Orten.
Packt man diese in ein Archiv und leg sie z.B. auf an NAS, hat man es bei einem Crash deutlich leichter…

#!/bin/bash

here=$(pwd)

MYSQL_USR="dbroot"
MYSQL_PWD="dbroot-Password"
MYSQL_CMD=/usr/bin/mysql
MYSQL_DMP=/usr/bin/mysqldump

mount -t nfs -o nolock nashost:/NFSBackup /mnt/backup

for (( i=10; i>=1; i--))
        do
        k=$(printf '%03d' "$i")
        j=$(printf '%03d' "$((i+1))")
        if [ -f /mnt/backup/${HOSTNAME}.${k}.tar.gz ]; then
                mv -f /mnt/backup/${HOSTNAME}.${k}.tar.gz /mnt/backup/${HOSTNAME}.${j}.tar.gz
        fi
        done

if [ -f /mnt/backup/${HOSTNAME}.tar.gz ]; then
        mv -f /mnt/backup/${HOSTNAME}.tar.gz /mnt/backup/${HOSTNAME}.001.tar.gz
fi
cd /

if [ -f $MYSQL_CMD ]; then
        databases=`$MYSQL_CMD --user=$MYSQL_USR -p$MYSQL_PWD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
        for db in $databases; do
#               echo "Dumping $db ..."
                $MYSQL_DMP --force --events --opt --user=$MYSQL_USR -p$MYSQL_PWD --databases $db > /opt/mysqlbck/$db.sql
        done
fi

tar czf /mnt/backup/$HOSTNAME.tar.gz opt etc home var --exclude=var/lib/mysql/* --exclude=*.sock
fuser -km /mnt/backup
umount /mnt/backup
cd $here

Zeile 5 und 6 muss mit den Anmeldedaten eines MySQL-Server ausgefüllt werden. Hat man keinen MySQL installiert, kann dies ignoriert werden.

In Zeile 12 gibt man die Anzahl der Backups an. Aktuell sind es 10. Da jedes Backup ein Full-Backup ist ist diese Zahl sozusagen die direkte Backup-Storage-Size…

 

 

Einfaches Backup für Linux

Schreibe einen Kommentar