Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
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> | ||