Backup SQL Crontab

Dieses Script sichert Täglich alle SQL Datenbanken als tar.bz Datei mit 256 bit. Zusätzlich wird die verschlüsselte Datei danach auf einen Externen FTP Seerver geladen, und es werden alle Backups die ältersind als 5 Tage gelöscht.

Zuerst erstellen wir uns ein Backup Pfad und ein Backup Script:

Benötigte Software

// Installation von ncftp (FTP Programm)
apt-get install ncftp

//Installation von aespipe (Verschlüsselungs Programm)
apt-get install aespipe

Verschlüsselungsdatei erstellen

Hier erstellen wir eine Datei die das Verschlüsselungskennwort enthält.

cd /home/
mkdir backup
cd backup
mkdir sql

nano /home/backup/aespipe.pwd

//Inhalt min 20 Zeichen
das_hier#sehr-geheime,k3nnw0rt

Script Datei erstellen

//Script Datei erstellen
nano /home/backup/day_sql_backup.sh

Beispiel für Tägliches Backup, max 5 Tage

days=5
dir_save_backup=/home/backup/sql
DATUMDELETE=`date --date "$days day ago" +%d-%m-%Y`
DATUM=`date +%d-%m-%Y`
mysqldump -u root -ppasswd --all-databases --result-file=$dir_save_backup/sql_backup_vom_$DATUM.sql
tar -cj $dir_save_backup/sql_backup_vom_$DATUM.sql| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/sql_backup_vom_$DATUM.tar.bz2.enc
rm $dir_save_backup/sql_backup_vom_$DATUMDELETE.tar.bz2.enc
ncftpput -m -u ftpuser -p ftppass xx.xx.xxx.xx $dir_save_backup/ $dir_save_backup/backup_vom_$DATUM.tar.bz2.enc

Beispiel für Wöchentliches Backup, max 5 Wochen

weeks=5
dir_save_backup=/home/backup/sql
DATUMDELETE=`date --date "$weeks weeks ago" +%V-%Y`
DATUM=`date +%V-%Y`
mysqldump -u root -ppasswd --all-databases --result-file=$dir_save_backup/sql_backup_KW_$DATUM.sql
tar -cj $dir_save_backup/sql_backup_KW_$DATUM.sql| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/sql_backup_KW_$DATUM.tar.bz2.enc
rm $dir_save_backup/sql_backup_KW_$DATUMDELETE.tar.bz2.enc
ncftpput -m -u ftpuser -p ftppass xx.xx.xxx.xx $dir_save_backup/ $dir_save_backup/backup_KW_$DATUM.tar.bz2.enc

Beispiel Monatliches Backup, max 5 Monate

weeks=20
dir_save_backup=/home/backup/sql
DATUMDELETE=`date --date "$weeks weeks ago" +%b-%Y`
DATUM=`date +%b-%Y`
mysqldump -u root -ppasswd --all-databases --result-file=$dir_save_backup/sql_backup_monat_$DATUM.sql
tar -cj $dir_save_backup/sql_backup_monat_$DATUM.sql| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/sql_backup_monat_$DATUM.tar.bz2.enc
rm $dir_save_backup/backup_monat_$DATUMDELETE.tar.bz2.enc
ncftpput -m -u ftpuser -p ftppass xx.xx.xxx.xx $dir_save_backup/ $dir_save_backup/backup_monat_$DATUM.tar.bz2.enc

 

Die jeweiligen sh Scripte müssen mit

chmod +x xxxxx.sh

ausführbar gemacht werden.

 

Crontab erstellen

crontab -e

@daily /home/backup/day_sql_backup.sh
0 0 * * 0 /home/backup/week_sql_backup.sh
0 0 1 * * /home/backup/month_sql_backup.sh