summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2022-05-26 22:56:24 +0200
committerPatrick Spek <p.spek@tyil.nl>2022-05-26 22:56:24 +0200
commitddf102d577a74b9b1ca51f2e95e3ee358f1565ca (patch)
tree7069c2309693c28d97d96983f747648c655e3519
parent358c9a47d7514d6e828843e4b630d1f7ac1c395e (diff)
Make backup-borg playbook only install borg
-rw-r--r--playbooks.d/backup-borg/etc/defaults2
-rw-r--r--playbooks.d/backup-borg/etc/os.d/freebsd1
-rw-r--r--playbooks.d/backup-borg/etc/os.d/linux-gentoo1
-rw-r--r--playbooks.d/backup-borg/playbook.bash54
-rw-r--r--playbooks.d/backup-borg/share/backup.bash59
5 files changed, 2 insertions, 115 deletions
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 "$@"