Backup Ordner Crontab

Dieses Script sichert Täglich den eingestellten Ordner und verschlüsselt die komprimierte tar.gz 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

<p>Hier erstellen wir eine Datei die das Verschlüsselungskennwort enthält.</p>

cd /home/
mkdir backup
cd backup
mkdir www

nano /home/backup/aespipe.pwd

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

Script Datei erstellen

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

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

#!/bin/bash
days=5
dir_to_backup=/var/www/
dir_save_backup=/home/backup/www
DATUMDELETE=`date --date "$days day ago" +%d-%m-%Y`
DATUM=`date +%d-%m-%Y`
rm $dir_save_backup/backup_vom_$DATUMDELETE.tar.bz2.enc
tar -cj $dir_to_backup| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/backup_vom_$DATUM.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

#!/bin/bash
weeks=5
dir_to_backup=/var/www/
dir_save_backup=/home/backup/www
DATUMDELETE=`date --date "$weeks weeks ago" +%V-%Y`
DATUM=`date +%V-%Y`
rm $dir_save_backup/backup_KW_$DATUMDELETE.tar.bz2.enc
tar -cj $dir_to_backup| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/backup_KW_$DATUM.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

#!/bin/bash
weeks=20
dir_to_backup=/var/www/
dir_save_backup=/home/backup/www
DATUMDELETE=`date --date "$weeks weeks ago" +%b-%Y`
DATUM=`date +%b-%Y`
rm $dir_save_backup/backup_monat_$DATUMDELETE.tar.bz2.enc
tar -cj $dir_to_backup| aespipe -P /home/backup/aespipe.pwd -C 10 -e aes256 > $dir_save_backup/backup_monat_$DATUM.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_www_backup.sh
0 0 * * 0 /home/backup/week_www_backup.sh
0 0 1 * * /home/backup/month_www_backup.sh

Decode / entpacken

Wir erstellen uns ein script welchen die zu decodierende Datei automatisch entpackt.

Dieses nennen wir decode.sh und legen es im Ordner /home/backup/decode/ mit folgenden Inhalt ab.

cat *.tar.bz2.enc | aespipe -C 10 -e aes256 -P /home/backup/aespipe.pwd -d | tar -xj
rm *.tar.bz2.enc

Vor dem ausführen müssen wir die kodierte Datei nur noch in den Ordner /home/backup/decode/ kopieren. Nach dem entschlüsseln wir die kodierte Datei per rm automatisch gelöscht. Somit kann man sich lästige Pfad eingaben sparen. Bedingung ist natürlich das nur eine tar.bz2.enc Datei im Ordner"decode" vorhanden ist. Wenn die Backups immer den gleichen Inhalt haben, also z.B. die gleiche Ordner Struktur müsst Ihr den Ordner vorher Leeren.