Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
backup [2017/03/30 07:54]
mike angelegt
backup [2017/03/30 08:00]
mike
Zeile 16: Zeile 16:
 ''​mysqldump_yearly_{Jahr}.sql.tar.gz''​ ''​mysqldump_yearly_{Jahr}.sql.tar.gz''​
 Jahr: zB "​2017"​ Jahr: zB "​2017"​
 +
 +Das Backup wird komprimiert mittels gzip und asymmetrisch verschlüsselt. Der Publickey zum Verschlüsseln liegt dabei am Server, der Privatekey wird sicher verwahrt und wird nur zum entschlüsseln eines Backups benötigt - er liegt nicht innerhalb der VM.
 +
 +===== Skripte =====
 +
 +Die Backupskripte liegen dabei in ''/​op/​webserver/​backup'',​ das Dateilayout sieht folgendermaßen aus:
 +<​file>​
 +-rwx------ 1 root     ​root ​ 706 Mar 30 09:05 backup.sh
 +-rw------- 1 root     ​root ​  57 Mar 30 07:54 mysqldump.cnf
 +-rw-r--r-- 1 root     root 1285 Mar 30 08:08 mysqldump-secure.pub.pem
 +-rwxr--r-- 1 root     ​root ​ 856 Mar 30 09:26 restore.sh
 +</​file>​
 +
 +==== backup.sh ====
 +
 +Das Backupskript selbst. Akzeptiert folgende Aufrufe:
 +
 +=== # ./backup.sh ===
 +Ohne Parameter wird ein tägliches Backup angelegt
 +
 +=== # ./backup.sh month ===
 +Ein monatliches Backup wird erstellt
 +
 +=== # ./backup.sh year ===
 +Ein jährliches Backup wird erstellt
 + 
 +<​code>​
 +#!/bin/bash
 +
 +
 +BACKUP_DIR=/​srv/​backup
 +DATABASE="​datenschutz"​
 +
 +
 +DOW=$(date +%u)
 +MONTH=$(date +%m)
 +YEAR=$(date +%Y)
 +
 +
 +DAILY_FILE="​mysqldump_daily_$DOW.sql.gz.enc"​
 +MONTHLY_FILE="​mysqldump_monthly_$MONTH.sql.gz.enc"​
 +YEARLY_FILE="​mysqldump_yearly_$YEAR.sql.gz.enc"​
 +
 +
 +BACKUPFILE=$BACKUP_DIR/​$DAILY_FILE
 +if [ "​$1"​ ==  "​month"​ ]; then
 +  BACKUPFILE=$BACKUP_DIR/​$MONTHLY_FILE
 +fi
 +
 +if [ "​$1"​ ==  "​year"​ ]; then
 +  BACKUPFILE=$BACKUP_DIR/​$YEARLY_FILE
 +fi
 +
 +echo "​Backup to $BACKUPFILE"​
 +
 +mysqldump --defaults-extra-file=/​opt/​webserver/​backup/​mysqldump.cnf ​ --single-transaction $DATABASE | \
 +gzip | \
 +openssl smime -encrypt -binary -text -aes256 -out $BACKUPFILE -outform DER /​opt/​webserver/​backup/​mysqldump-secure.pub.pem
 +</​code>​