diff --git a/backups.yml b/backups.yml index a602ecc..1376968 100644 --- a/backups.yml +++ b/backups.yml @@ -1,32 +1,33 @@ --- - hosts: - mason.kde.org - cano.kde.org - overwatch.kde.org - bluemchen.kde.org - fiesta.kde.org - recluse.kde.org - code.kde.org - stumptown.kde.org - mimi.kde.org - orbi.kde.org - dalca.kde.org - library.kde.org - rosetta.kde.org - letterbox.kde.org - thera.kde.org - mygalo.kde.org - komaci.kde.org - edulis.kde.org - platna.kde.org - milonia.kde.org - eresida.kde.org + - nicoda.kde.org vars_files: - vars/backups.yml - vars/backups-vault.yml roles: - kde-backup diff --git a/production/host_vars/nicoda.kde.org.yml b/production/host_vars/nicoda.kde.org.yml new file mode 100644 index 0000000..b5efae8 --- /dev/null +++ b/production/host_vars/nicoda.kde.org.yml @@ -0,0 +1,7 @@ +--- +backup_directory: backups +hetzner_backup_host: nephilia +backup_apt_dependencies: [borgbackup] +backup_cron: + hour: 1 + minute: 30 diff --git a/roles/kde-backup/templates/backup-nicoda.sh b/roles/kde-backup/templates/backup-nicoda.sh new file mode 100644 index 0000000..499f7a7 --- /dev/null +++ b/roles/kde-backup/templates/backup-nicoda.sh @@ -0,0 +1,29 @@ +LOCATION=/root/{{backup_directory}} + +# Backup databases +for DATABASE in `mysqlshow | grep -v "information_schema" | grep -v "performance_schema" | grep -v "mysql" | tail -n+4 | awk '{print $2}'`; do + mysqldump --opt --quick --single-transaction --skip-extended-insert --events --create-options --set-charset $DATABASE > $LOCATION/db.$DATABASE.`date +%w`.sql + xz -f $LOCATION/db.$DATABASE.`date +%w`.sql +done + +# Backup homes as well +tar -cJf $LOCATION/homes.`date +%w`.tar.xz -C / home/ 2>&1 | grep -v "we read it" + +# Backup configuration and list of installed packages +tar -czf $LOCATION/etc.`date +%w`.tgz -C / etc/ +tar -czf $LOCATION/crontabs.`date +%w`.tgz -C / var/spool/cron/ +dpkg -l > $LOCATION/dpkg.`date +%w` + +# Transfer the generated backups +lftp -f ~/bin/backup-options + +# Borg backup time! Let's get ready to go... +export BORG_PASSPHRASE='{{backup_borg_passphrase}}' + +{% set backup_creds = hetzner_backup_creds[hetzner_backup_host] %} +BORG_SERVER="ssh://{{backup_creds.username}}@{{backup_creds.hostname}}:23" + +# Backup /srv +export BORG_REPO="$BORG_SERVER/./borg-backups/nicoda-sites" +borg create --compression zlib,5 --exclude-caches ::'{hostname}-srv-{now}' /srv/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 3 2>&1 | grep -v "Compacting segments"