chris 746868d720 Add 'main-site/' from commit '5cefb4d1618bc54ae0e86830421a8c911900302c'
git-subtree-dir: main-site
git-subtree-mainline: 4d1daa39101c0a85ca6d916f1c31139faf39632a
git-subtree-split: 5cefb4d1618bc54ae0e86830421a8c911900302c
2026-04-13 19:22:17 -04:00

45 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Simple backup script for DB + uploads.
# Usage: ./backup.sh [db_name] [mongodb_service_name]
# Defaults: db_name="photogallery", mongodb_service="mongodb"
DB_NAME="${1:-photogallery}"
MONGO_SERVICE="${2:-mongodb}"
TIMESTAMP="$(date +%F-%H%M%S)"
BACKUP_ROOT="backups/photogallery-${TIMESTAMP}"
CONTAINER_DUMP="/data/tmp-backup-${TIMESTAMP}"
mkdir -p "${BACKUP_ROOT}"
compose() {
if command -v docker-compose >/dev/null 2>&1; then
docker-compose "$@"
else
docker compose "$@"
fi
}
echo "👉 Dumping Mongo database '${DB_NAME}' from service '${MONGO_SERVICE}'..."
compose exec "${MONGO_SERVICE}" mongodump --db "${DB_NAME}" --out "${CONTAINER_DUMP}"
echo "👉 Copying DB dump to host..."
compose cp "${MONGO_SERVICE}:${CONTAINER_DUMP}/${DB_NAME}" "${BACKUP_ROOT}/db"
echo "👉 Cleaning up dump inside container..."
compose exec "${MONGO_SERVICE}" rm -rf "${CONTAINER_DUMP}"
echo "👉 Copying uploads directory..."
cp -a "photo-gallery-app/backend/uploads" "${BACKUP_ROOT}/uploads"
ARCHIVE="backups/photogallery-${TIMESTAMP}.tar.gz"
echo "👉 Creating archive ${ARCHIVE} ..."
tar -czf "${ARCHIVE}" -C "backups" "photogallery-${TIMESTAMP}"
echo "✅ Backup complete:"
echo " DB dump: ${BACKUP_ROOT}/db"
echo " Uploads: ${BACKUP_ROOT}/uploads"
echo " Archive: ${ARCHIVE}"
echo "You can delete the unarchived folder to save space after verifying the archive."