diff --git a/backups.yml b/backups.yml index 677a6e0..2660930 100644 --- a/backups.yml +++ b/backups.yml @@ -1,35 +1,36 @@ --- - hosts: - olios.kde.org - 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 - gohma.kde.org - orbi.kde.org - dalca.kde.org - ange.kde.org - pirate.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 vars_files: - vars/backups.yml - vars/backups-vault.yml roles: - kde-backup diff --git a/production/host_vars/milonia.kde.org.yml b/production/host_vars/milonia.kde.org.yml new file mode 100644 index 0000000..0e223c1 --- /dev/null +++ b/production/host_vars/milonia.kde.org.yml @@ -0,0 +1,4 @@ +--- +backup_directory: backups +hetzner_backup_host: storage-box +backup_apt_dependencies: [borgbackup] diff --git a/roles/kde-backup/templates/backup-milonia.sh b/roles/kde-backup/templates/backup-milonia.sh new file mode 100644 index 0000000..4e4175a --- /dev/null +++ b/roles/kde-backup/templates/backup-milonia.sh @@ -0,0 +1,49 @@ +LOCATION=/root/{{backup_directory}} + +# Backup mirrors listing +mb -b download export --format=postgresql > $LOCATION/mirrors-download.`date +%w`.sql +mb -b files export --format=postgresql > $LOCATION/mirrors-files.`date +%w`.sql + +# 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 traditional backups to Hetzner Backup Space +lftp -f ~/bin/backup-options + +# Prepare to run Borg backups +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 Homes +export BORG_REPO="$BORG_SERVER/./borg-backups/homes" +borg create --compression none --exclude-caches --exclude /home/akademy/2017 --exclude /home/marble/newstuff-tmp ::'{hostname}-homes-{now}' /home/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" + +# Backup Distribute +export BORG_REPO="$BORG_SERVER/./borg-backups/cdn" +borg create --compression none --exclude-caches ::'{hostname}-cdn-{now}' /srv/www/cdn.kde.org/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" + +# Backup Distribute +export BORG_REPO="$BORG_SERVER/./borg-backups/distribute" +borg create --compression none --exclude-caches ::'{hostname}-distribute-{now}' /srv/www/distribute.kde.org/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" + +# Backup Maps +export BORG_REPO="$BORG_SERVER/./borg-backups/maps" +borg create --compression none --exclude-caches ::'{hostname}-maps-{now}' /srv/www/maps.kde.org/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" + +# Backup Download +export BORG_REPO="$BORG_SERVER/./borg-backups/download" +borg create --compression none --exclude-caches ::'{hostname}-download-{now}' /srv/archives/ftp/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments" + +# Backup Files +export BORG_REPO="$BORG_SERVER/./borg-backups/files" +borg create --compression none --exclude-caches ::'{hostname}-files-{now}' /srv/archives/files/ 2>&1 | grep -v "Compacting segments" +borg prune --prefix '{hostname}-' --keep-daily 7 --keep-weekly 4 --keep-monthly 6 2>&1 | grep -v "Compacting segments"