Files
QSfera/Server/deployments/raspberry-pi/backup.sh
T
Курнат Андрей e48e1e36a5
Android / test-and-build (push) Canceled after 0s
Server / deployment-config (push) Canceled after 0s
Server / vulnerability-scan (push) Canceled after 0s
Implement background media ingestion and Pi deployment
2026-07-15 22:58:03 +03:00

39 lines
848 B
Bash

#!/bin/sh
set -eu
cd "$(dirname "$0")"
backup_root=${1:-./backups}
timestamp=$(date -u +%Y%m%dT%H%M%SZ)
archive="$backup_root/qsfera-$timestamp.tar.gz"
temporary="$archive.incomplete"
archive_directory=$(dirname "$archive")
archive_name=$(basename "$archive")
umask 077
mkdir -p "$backup_root"
compose() {
docker compose "$@"
}
cleanup() {
rm -f "$temporary"
compose start qsfera >/dev/null
}
compose config --quiet
compose stop qsfera
trap cleanup EXIT
trap 'exit 1' HUP INT TERM
compose run --rm --no-deps -T --entrypoint /bin/sh qsfera -ec \
'tar -C / -czf - etc/qsfera var/lib/qsfera' >"$temporary"
mv "$temporary" "$archive"
(cd "$archive_directory" && sha256sum "$archive_name" >"$archive_name.sha256")
compose start qsfera >/dev/null
trap - EXIT HUP INT TERM
printf 'Backup: %s\nChecksum: %s\n' "$archive" "$archive.sha256"