feat: NAS backup script for db and media volumes
Runs via Docker, rsync over SSH to 192.168.178.110. Cron: daily at 3am. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
1fe2b9fad8
commit
42e81c3609
1 changed files with 23 additions and 0 deletions
23
scripts/backup_to_nas.sh
Executable file
23
scripts/backup_to_nas.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/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="stephan"
|
||||||
|
NAS_HOST="192.168.178.110"
|
||||||
|
NAS_PATH="/share/MD0_DATA/Public/plantdb_backup"
|
||||||
|
SSH_KEY="/home/stephan/.ssh/plantdb_backup"
|
||||||
|
|
||||||
|
docker run --rm \
|
||||||
|
-v plantdb_db:/data/db:ro \
|
||||||
|
-v plantdb_media:/data/media:ro \
|
||||||
|
-v "${SSH_KEY}:/root/.ssh/id_ed25519:ro" \
|
||||||
|
alpine sh -c "
|
||||||
|
apk add --no-cache rsync openssh-client -q 2>/dev/null
|
||||||
|
mkdir -p /root/.ssh
|
||||||
|
ssh-keyscan -H ${NAS_HOST} > /root/.ssh/known_hosts 2>/dev/null
|
||||||
|
rsync -av --delete /data/db/ ${NAS_USER}@${NAS_HOST}:${NAS_PATH}/db/
|
||||||
|
rsync -av --delete /data/media/ ${NAS_USER}@${NAS_HOST}:${NAS_PATH}/media/
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] plantdb backup complete"
|
||||||
Loading…
Add table
Reference in a new issue