#!/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 "$@"