From d573dfbbda14b1ed6abc231f8695331343f41763 Mon Sep 17 00:00:00 2001 From: Stephan Kerkman Date: Sun, 31 May 2026 13:36:39 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20rewrite=20backup=20script=20=E2=80=94=20?= =?UTF-8?q?extract=20via=20Docker,=20rsync=20from=20host?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- scripts/backup_to_nas.sh | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/scripts/backup_to_nas.sh b/scripts/backup_to_nas.sh index b520d5e..171b91f 100755 --- a/scripts/backup_to_nas.sh +++ b/scripts/backup_to_nas.sh @@ -3,21 +3,30 @@ # 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_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:/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/ - " + -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"