move scripts to own dir
This commit is contained in:
77
scripts/restore.sh
Executable file
77
scripts/restore.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/.env"
|
||||
DATA_ROOT="${DATA_ROOT:-/opt/docker-data}"
|
||||
|
||||
BACKUP_DIR="/opt/backups"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Usage
|
||||
# ------------------------------------------------------------------
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <date>"
|
||||
echo " e.g.: $0 2026-03-22"
|
||||
echo ""
|
||||
echo "Expects these files in $BACKUP_DIR:"
|
||||
echo " nextcloud-db-<date>.sql"
|
||||
echo " nextcloud-data-<date>.tar.gz"
|
||||
echo " gitea-<date>.tar.gz"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DATE="$1"
|
||||
DB_DUMP="$BACKUP_DIR/nextcloud-db-$DATE.sql"
|
||||
NC_ARCHIVE="$BACKUP_DIR/nextcloud-data-$DATE.tar.gz"
|
||||
GITEA_ARCHIVE="$BACKUP_DIR/gitea-$DATE.tar.gz"
|
||||
|
||||
for f in "$DB_DUMP" "$NC_ARCHIVE" "$GITEA_ARCHIVE"; do
|
||||
if [ ! -f "$f" ]; then
|
||||
echo "ERROR: $f not found."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "==> Restoring from backup date: $DATE"
|
||||
echo " This will overwrite current data. Press Ctrl+C within 5s to abort."
|
||||
sleep 5
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Stop services
|
||||
# ------------------------------------------------------------------
|
||||
echo "==> Stopping services..."
|
||||
docker compose -f "$SCRIPT_DIR/nextcloud/docker-compose.yml" --env-file "$SCRIPT_DIR/.env" down
|
||||
docker compose -f "$SCRIPT_DIR/gitea/docker-compose.yml" --env-file "$SCRIPT_DIR/.env" down
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Restore Nextcloud data
|
||||
# ------------------------------------------------------------------
|
||||
echo "==> Restoring Nextcloud data..."
|
||||
tar -xzf "$NC_ARCHIVE" -C "$DATA_ROOT"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Restore Gitea data
|
||||
# ------------------------------------------------------------------
|
||||
echo "==> Restoring Gitea data..."
|
||||
tar -xzf "$GITEA_ARCHIVE" -C "$DATA_ROOT"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Start Postgres and restore DB
|
||||
# ------------------------------------------------------------------
|
||||
echo "==> Starting Postgres for DB restore..."
|
||||
docker compose -f "$SCRIPT_DIR/nextcloud/docker-compose.yml" --env-file "$SCRIPT_DIR/.env" up -d postgres
|
||||
echo " -> Waiting for Postgres to be ready..."
|
||||
sleep 5
|
||||
|
||||
echo "==> Restoring Nextcloud database..."
|
||||
docker exec -i nextcloud-postgres psql -U nextcloud < "$DB_DUMP"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Start all services
|
||||
# ------------------------------------------------------------------
|
||||
echo "==> Starting all services..."
|
||||
docker compose -f "$SCRIPT_DIR/nextcloud/docker-compose.yml" --env-file "$SCRIPT_DIR/.env" up -d
|
||||
docker compose -f "$SCRIPT_DIR/gitea/docker-compose.yml" --env-file "$SCRIPT_DIR/.env" up -d
|
||||
|
||||
echo "==> Restore complete."
|
||||
Reference in New Issue
Block a user