#!/bin/bash # Daily backup for Vaultwarden data volume # Creates compressed tar.gz archives with 7-day rotation set -euo pipefail BACKUP_DIR="/srv/docker_services/www/sites/knusperkerne/vault/backups" VOLUME_NAME="vaultwarden-data" DATE=$(date +%F) ARCHIVE="$BACKUP_DIR/vaultwarden_${DATE}.tar.gz" mkdir -p "$BACKUP_DIR" echo "[INFO] Creating backup for Vaultwarden volume: $VOLUME_NAME" docker run --rm \ -v "${VOLUME_NAME}:/data:ro" \ -v "${BACKUP_DIR}:/backup" \ alpine tar czf "/backup/vaultwarden_${DATE}.tar.gz" /data # Keep only 7 most recent backups echo "[INFO] Rotating old backups..." ls -1t "$BACKUP_DIR"/vaultwarden_*.tar.gz | tail -n +8 | xargs -r rm -f echo "[OK] Backup completed: $ARCHIVE"