bloombase/scripts/backup_to_nas.sh
Stephan Kerkman d573dfbbda fix: rewrite backup script — extract via Docker, rsync from host
Avoids SSH-inside-container complexity. Docker cp to /tmp,
native rsync to NAS, Docker cleanup for root-owned files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 13:36:39 +02:00

32 lines
965 B
Bash
Executable file

#!/bin/bash
# Backs up plantdb volumes (SQLite db + media) to NAS via SSH.
# Cron: 0 3 * * * /home/stephan/stacks/plantdb/scripts/backup_to_nas.sh >> /var/log/plantdb_backup.log 2>&1
set -euo pipefail
NAS_USER="admin"
NAS_HOST="nas"
NAS_PATH="/share/MD0_DATA/Public/plantdb_backup"
SSH_KEY="/home/stephan/.ssh/plantdb_backup"
TMP_DIR="/tmp/plantdb_backup_$$"
cleanup() {
docker run --rm -v "${TMP_DIR}:/dst" alpine sh -c "rm -rf /dst/db /dst/media"
rmdir "${TMP_DIR}"
}
trap cleanup EXIT
mkdir -p "${TMP_DIR}/db" "${TMP_DIR}/media"
# Extract volume data to tmp dir
docker run --rm \
-v plantdb_db:/src/db:ro \
-v plantdb_media:/src/media:ro \
-v "${TMP_DIR}:/dst" \
alpine sh -c "cp -a /src/db/. /dst/db/ && cp -a /src/media/. /dst/media/"
# Sync to NAS
rsync -av --delete \
-e "ssh -i ${SSH_KEY} -o StrictHostKeyChecking=no" \
"${TMP_DIR}/" "${NAS_USER}@${NAS_HOST}:${NAS_PATH}/"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] plantdb backup complete"