Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
backup [2017/03/30 07:55]
mike
backup [2017/03/30 08:00]
mike
Zeile 19: Zeile 19:
 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. 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>​