diff options
| author | Paul Buetow <paul@buetow.org> | 2025-10-02 11:28:53 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-10-02 11:28:53 +0300 |
| commit | c0f9ecf5e0b075db8e54ef1235ec80878e418398 (patch) | |
| tree | d729aef5835fdfa173277c4189342976e33c6446 /gemfeed/examples/conf/babylon5/backup-start | |
| parent | a96adfd84d903c50d75c8771cdcc78dd5e942618 (diff) | |
Update content for html
Diffstat (limited to 'gemfeed/examples/conf/babylon5/backup-start')
| -rwxr-xr-x | gemfeed/examples/conf/babylon5/backup-start | 64 |
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 |
