From ddf102d577a74b9b1ca51f2e95e3ee358f1565ca Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Thu, 26 May 2022 22:56:24 +0200 Subject: Make backup-borg playbook only install borg --- playbooks.d/backup-borg/etc/defaults | 2 +- playbooks.d/backup-borg/etc/os.d/freebsd | 1 - playbooks.d/backup-borg/etc/os.d/linux-gentoo | 1 - playbooks.d/backup-borg/playbook.bash | 54 +----------------------- playbooks.d/backup-borg/share/backup.bash | 59 --------------------------- 5 files changed, 2 insertions(+), 115 deletions(-) delete mode 100644 playbooks.d/backup-borg/share/backup.bash diff --git a/playbooks.d/backup-borg/etc/defaults b/playbooks.d/backup-borg/etc/defaults index 5b4b596..5c91452 100644 --- a/playbooks.d/backup-borg/etc/defaults +++ b/playbooks.d/backup-borg/etc/defaults @@ -1 +1 @@ -backup.user=root +pkg.borg=borg diff --git a/playbooks.d/backup-borg/etc/os.d/freebsd b/playbooks.d/backup-borg/etc/os.d/freebsd index b762533..ccd1985 100644 --- a/playbooks.d/backup-borg/etc/os.d/freebsd +++ b/playbooks.d/backup-borg/etc/os.d/freebsd @@ -1,2 +1 @@ pkg.borg=py38-borgbackup -pkg.borgmatic=py38-borgmatic diff --git a/playbooks.d/backup-borg/etc/os.d/linux-gentoo b/playbooks.d/backup-borg/etc/os.d/linux-gentoo index e0403ec..4fa41e2 100644 --- a/playbooks.d/backup-borg/etc/os.d/linux-gentoo +++ b/playbooks.d/backup-borg/etc/os.d/linux-gentoo @@ -1,2 +1 @@ pkg.borg=app-backup/borgbackup -pkg.borgmatic=app-backup/borgmatic diff --git a/playbooks.d/backup-borg/playbook.bash b/playbooks.d/backup-borg/playbook.bash index b2149e0..8684f47 100644 --- a/playbooks.d/backup-borg/playbook.bash +++ b/playbooks.d/backup-borg/playbook.bash @@ -1,65 +1,13 @@ #!/usr/bin/env bash playbook_add() { - # TODO: Abort if backup.key is not set yet - pkg install borg - pkg install borgmatic - - # Create a `borg1` for compatability with rsync.net - ln -s /usr/bin/borg /usr/local/bin/borg1 playbook_sync - - info "$BASHTARD_PLAYBOOK" "Don't forget to add \`sysbackup\` to your crontab!" } -playbook_sync() { - local config - - config="$(getent passwd "$(config "backup.user")" | awk -F: '{ print $6 }')/.config/borgmatic/config.yaml" - - mkdir -pv -- "$(dirname "$config")" - - notice "$BASHTARD_PLAYBOOK" "Installing backup script" - file_template "backup.bash" \ - > /usr/local/bin/sysbackup - chmod +x /usr/local/bin/sysbackup - - # This is not going to be pretty, generating a YAML document from - # straight Bash, but the simple sed-based templating in Bashtard - # doesn't do loops, so this is the best I can do here. - notice "$BASHTARD_PLAYBOOK" "Generating borgmatic configuration" - printf "location:\n" > "$config" - printf " source_directories:\n" >> "$config" - - while read -r cpath - do - printf ' - "%s"\n' "$(config "$cpath")" >> "$config" - done < <(config_subkeys "backup.fs.paths") - - printf " repositories:\n" >> "$config" - - while read -r cremote - do - printf ' - "%s"\n' "$(config "$cremote")" >> "$config" - done < <(config_subkeys "backup.fs.remotes") - - printf " one_file_system: true\n" >> "$config" - printf " remote_path: borg1\n" >> "$config" # rsync.net wont work without this - printf "storage:\n" >> "$config" - printf " encryption_passphrase: \"%s\"\n" "$(config "backup.key")" >> "$config" - printf "retention:\n" >> "$config" - printf " keep_daily: 7\n" >> "$config" - printf " keep_weekly: 4\n" >> "$config" - printf " keep_monthly: 6\n" >> "$config" - printf " keep_yearly: 1\n" >> "$config" - - chmod 600 "$config" -} +playbook_sync() { :; } playbook_del() { - pkg uninstall borgmatic pkg uninstall borg - rm -f -- /usr/local/bin/sysbackup } diff --git a/playbooks.d/backup-borg/share/backup.bash b/playbooks.d/backup-borg/share/backup.bash deleted file mode 100644 index 0f9d5b7..0000000 --- a/playbooks.d/backup-borg/share/backup.bash +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env bash - -main() { - BORG_PASSPHRASE="$(bashtard var backup.key | awk -F= '{ print $NF }')" - - if [[ -z "$BORG_PASSPHRASE" ]] - then - return 3 - fi - - export BORG_PASSPHRASE - - backup_filesystem - backup_database_postgresql -} - -backup_filesystem() { - if ! command -v "borg" > /dev/null 2>&1 - then - return 4 - fi - - if ! command -v "borgmatic" > /dev/null 2>&1 - then - return 4 - fi - - borgmatic -} - -backup_database_postgresql() { - if ! command -v "psql" > /dev/null 2>&1 - then - return 4 - fi - - if ! command -v "pg_dump" > /dev/null 2>&1 - then - return 4 - fi - - local remote - - remote="$(bashtard var backup.db.postgresql.remote_base)" - PGUSER="$(bashtard var backup.db.postgresql.user | awk -F= '{ print $NF }')" - - export PGUSER - - while read -r database - do - [[ $database == "postgres" ]] && continue - [[ $database =~ template* ]] && continue - - pg_dump "$database" \ - | borg create "$remote-$database::$(date -u +%FT%TZ)" - done < <(psql -AXt -d template1 -c "SELECT datname FROM pg_database") -} - -main "$@" -- cgit v1.1