From 71b6f1a8e406f7b9243a595e4e47add843a7d7bc Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Thu, 11 Dec 2025 12:02:29 +0000 Subject: [PATCH] added script --- backup.sh | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 backup.sh diff --git a/backup.sh b/backup.sh new file mode 100755 index 0000000..ef2f0f7 --- /dev/null +++ b/backup.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +set -euo pipefail + +BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DATA_DIR="${BASE_DIR}/vw-data" +ENV_FILE="${BASE_DIR}/.env" +BACKUP_DIR="${BASE_DIR}/.backup" +KEEP_LAST=7 + +COMPOSE_CMD="docker compose" + +TIMESTAMP="$(date +'%Y%m%d-%H%M%S')" +BACKUP_FILE="${BACKUP_DIR}/vaultwarden-backup-${TIMESTAMP}.tar.gz" + +echo "======================================================" +echo ">>> Vaultwarden BACKUP START" +echo ">>> Time: $(date)" +echo ">>> Directory: ${BASE_DIR}" +echo "======================================================" + +# 1. STOP container +echo ">>> Stopping Vaultwarden (docker compose down)..." +${COMPOSE_CMD} down + +# Create backup dir if missing +mkdir -p "${BACKUP_DIR}" + +# Sanity checks +if [[ ! -d "${DATA_DIR}" ]]; then + echo "ERROR: Data directory not found: ${DATA_DIR}" + exit 1 +fi + +if [[ ! -f "${ENV_FILE}" ]]; then + echo "ERROR: .env file not found: ${ENV_FILE}" + exit 1 +fi + +# 2. CREATE BACKUP TAR.GZ +echo ">>> Creating backup: ${BACKUP_FILE}" +tar -czf "${BACKUP_FILE}" \ + -C "${BASE_DIR}" \ + .env \ + vw-data + +echo ">>> Backup successfully created." + +# 3. CLEAN OLD BACKUPS +echo ">>> Cleaning old backups (keep last ${KEEP_LAST})..." +ls -1t "${BACKUP_DIR}"/vaultwarden-backup-*.tar.gz 2>/dev/null | tail -n +$((KEEP_LAST+1)) | xargs -r rm -f + +echo ">>> Current backups:" +ls -1 "${BACKUP_DIR}" + +# 4. START container again +echo ">>> Starting Vaultwarden (docker compose up -d)..." +${COMPOSE_CMD} up -d + +echo "======================================================" +echo ">>> BACKUP FINISHED OK" +echo ">>> Vaultwarden is running again." +echo "======================================================"