summaryrefslogtreecommitdiff
path: root/gemfeed/examples/conf/babylon5/backup-start
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-10-02 11:28:55 +0300
committerPaul Buetow <paul@buetow.org>2025-10-02 11:28:55 +0300
commit2b034797107660d4d83f8a7acdc55d32db785b82 (patch)
tree522fb586193c8a65ca6aee42df64eecc3555f644 /gemfeed/examples/conf/babylon5/backup-start
parent4d7d90638186ac71067232007607f6637d560a4d (diff)
Update content for md
Diffstat (limited to 'gemfeed/examples/conf/babylon5/backup-start')
-rwxr-xr-xgemfeed/examples/conf/babylon5/backup-start64
1 files changed, 64 insertions, 0 deletions
diff --git a/gemfeed/examples/conf/babylon5/backup-start b/gemfeed/examples/conf/babylon5/backup-start
new file mode 100755
index 00000000..c616ba09
--- /dev/null
+++ b/gemfeed/examples/conf/babylon5/backup-start
@@ -0,0 +1,64 @@
+#!/usr/bin/bash
+
+set -euf -o pipefail
+declare -r DATE=$(date +%d)
+
+ensure_directory () {
+ local -r dir="$1"; shift
+
+ if [ ! -d "$dir" ]; then
+ mkdir "$dir"
+ chmod 700 "$dir"
+ fi
+}
+
+get_docker_id () {
+ local -r image="$1"; shift
+ docker ps | awk -v image="$image" '$2 == image { print $1 }'
+}
+
+backup_wallabag () {
+ ensure_directory /opt/backup/wallabag
+ local -r container="$(get_docker_id 'wallabag/wallabag')"
+ docker stop "$container"
+ tar -hcvpf /opt/backup/wallabag/wallabag.tar.gz.tmp /opt/wallabag &&
+ mv /opt/backup/wallabag/wallabag.tar.gz.tmp /opt/backup/wallabag/wallabag-$DATE.tar.gz &&
+ touch /opt/backup/wallabag.lastrun
+ docker start "$container"
+}
+
+backup_vaultwarden () {
+ ensure_directory /opt/backup/vaultwarden
+ local -r container="$(get_docker_id 'vaultwarden/server:latest')"
+ docker stop "$container"
+ tar -hcvpf /opt/backup/vaultwarden/vaultwarden.tar.gz.tmp /opt/vaultwarden &&
+ mv /opt/backup/vaultwarden/vaultwarden.tar.gz.tmp /opt/backup/vaultwarden/vaultwarden-$DATE.tar.gz &&
+ touch /opt/backup/vaultwarden.lastrun
+ docker start "$container"
+}
+
+backup_anki () {
+ ensure_directory /opt/backup/anki-sync-server
+ local -r container="$(get_docker_id 'anki-sync-server:latest')"
+ docker stop "$container"
+ tar -hcvpf /opt/backup/anki-sync-server/anki-sync-server.tar.gz.tmp /opt/anki-sync-server &&
+ mv /opt/backup/anki-sync-server/anki-sync-server.tar.gz.tmp \
+ /opt/backup/anki-sync-server/anki-sync-server-$DATE.tar.gz &&
+ touch /opt/backup/anki-sync-server.lastrun
+ docker start "$container"
+}
+
+backup_audiobookshelf_meta () {
+ ensure_directory /opt/backup/audiobookshelf
+ rsync -avz -delete /opt/audiobookshelf/metadata/backups/ /opt/backup/audiobookshelf
+}
+
+backup_wallabag
+backup_vaultwarden
+backup_anki
+backup_audiobookshelf_meta
+
+chgrp -R backup /opt/backup/
+find -L /opt/backup -mindepth 2 -type f -exec chmod 640 "{}" \;
+find -L /opt/backup -mindepth 2 -type d -exec chmod 750 "{}" \;
+chmod 755 /opt/backup/nextcloud/borg