fix: offsite-sync configured for both Synology NAS
This commit is contained in:
@@ -2,8 +2,11 @@
|
|||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
SNAPSHOT_DIR="/opt/memento/backups/snapshots"
|
SNAPSHOT_DIR="/opt/memento/backups/snapshots"
|
||||||
REMOTE_HOST="${BACKUP_REMOTE_HOST:-}"
|
SSH_KEY="/root/.ssh/memento-nas"
|
||||||
REMOTE_PATH="${BACKUP_REMOTE_PATH:-/opt/memento-offsite-backups}"
|
NAS1="sepehr@192.168.1.132"
|
||||||
|
NAS1_PATH="/volume1/backups/memento"
|
||||||
|
NAS2="sepehr@192.168.1.146"
|
||||||
|
NAS2_PATH="/volume1/backups/memento"
|
||||||
LOG_FILE="/opt/memento/backups/backup.log"
|
LOG_FILE="/opt/memento/backups/backup.log"
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
@@ -22,12 +25,6 @@ send_alert() {
|
|||||||
|
|
||||||
log "=== Offsite backup sync ==="
|
log "=== Offsite backup sync ==="
|
||||||
|
|
||||||
if [ -z "$REMOTE_HOST" ]; then
|
|
||||||
log "WARNING: No BACKUP_REMOTE_HOST configured. Skipping offsite sync."
|
|
||||||
log "Set BACKUP_REMOTE_HOST=user@server in /opt/memento/.env.docker for offsite backups"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
LATEST=$(ls -t "$SNAPSHOT_DIR"/*.sql.gz 2>/dev/null | head -1)
|
LATEST=$(ls -t "$SNAPSHOT_DIR"/*.sql.gz 2>/dev/null | head -1)
|
||||||
if [ -z "$LATEST" ]; then
|
if [ -z "$LATEST" ]; then
|
||||||
log "ERROR: No snapshots to sync"
|
log "ERROR: No snapshots to sync"
|
||||||
@@ -35,13 +32,25 @@ if [ -z "$LATEST" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "Syncing $LATEST to $REMOTE_HOST:$REMOTE_PATH"
|
for NAS_ADDR in "$NAS1" "$NAS2"; do
|
||||||
rsync -az --chmod=F600 "$SNAPSHOT_DIR/" "${REMOTE_HOST}:${REMOTE_PATH}/" 2>&1 | tee -a "$LOG_FILE"
|
if [ "$NAS_ADDR" = "$NAS1" ]; then
|
||||||
|
NAS_PATH="$NAS1_PATH"
|
||||||
|
NAS_NAME="NAS1 (192.168.1.132)"
|
||||||
|
else
|
||||||
|
NAS_PATH="$NAS2_PATH"
|
||||||
|
NAS_NAME="NAS2 (192.168.1.146)"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
log "Syncing to $NAS_NAME..."
|
||||||
log "Offsite sync complete"
|
ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "$NAS_ADDR" "mkdir -p $NAS_PATH" 2>/dev/null
|
||||||
else
|
rsync -az -e "ssh -i $SSH_KEY -o StrictHostKeyChecking=no" --chmod=F600 "$SNAPSHOT_DIR/" "${NAS_ADDR}:${NAS_PATH}/" 2>&1 | tee -a "$LOG_FILE"
|
||||||
log "ERROR: Offsite sync failed!"
|
|
||||||
send_alert "🚨 MEMENTO: Offsite backup sync FAILED! Check rsync connectivity."
|
if [ $? -eq 0 ]; then
|
||||||
exit 1
|
log "$NAS_NAME: sync complete"
|
||||||
fi
|
else
|
||||||
|
log "ERROR: $NAS_NAME sync failed!"
|
||||||
|
send_alert "🚨 MEMENTO: Offsite backup FAILED for $NAS_NAME!"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
log "=== All offsite syncs complete ==="
|
||||||
|
|||||||
Reference in New Issue
Block a user