summaryrefslogtreecommitdiff
path: root/babylon5/backup-start
blob: c616ba090ec92b714e73ed04283a9ba53efad3aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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