restore: add restore.sh script to restore mongo backups by timestamp
This commit is contained in:
64
restore.sh
Executable file
64
restore.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Usage: ./restore.sh <timestamp>
|
||||
# Example: ./restore.sh 2025-08-24-14-30
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage: $0 <timestamp>"
|
||||
echo "Example: $0 2025-08-24-14-30"
|
||||
echo ""
|
||||
echo "Available backups:"
|
||||
ls -1t backups/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TIMESTAMP="$1"
|
||||
BACKUP_DIR="${BACKUP_DIR:-backups}"
|
||||
BACKUP_FILE="$BACKUP_DIR/mongo-volume-backup-$TIMESTAMP.tar.gz"
|
||||
|
||||
# Check if backup file exists
|
||||
if [ ! -f "$BACKUP_FILE" ]; then
|
||||
echo "Error: Backup file '$BACKUP_FILE' not found"
|
||||
echo ""
|
||||
echo "Available backups:"
|
||||
ls -1t "$BACKUP_DIR"/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Restoring from backup: $BACKUP_FILE"
|
||||
echo "WARNING: This will replace the current mongo-volume data!"
|
||||
read -p "Are you sure you want to continue? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "Restore cancelled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Scale down mongo service
|
||||
echo "Scaling down mongo service..."
|
||||
docker service scale utility-bills-tracker_mongo=0
|
||||
|
||||
# Backup current volume (just in case)
|
||||
SAFETY_BACKUP="mongo-volume-pre-restore-$(date +%Y-%m-%d-%H-%M).tar.gz"
|
||||
echo "Creating safety backup: $SAFETY_BACKUP"
|
||||
sudo tar -czf "$SAFETY_BACKUP" mongo-volume 2>/dev/null || true
|
||||
|
||||
# Remove current volume
|
||||
echo "Removing current mongo-volume..."
|
||||
sudo rm -rf mongo-volume
|
||||
|
||||
# Extract backup
|
||||
echo "Extracting backup..."
|
||||
sudo tar -xzf "$BACKUP_FILE"
|
||||
|
||||
# Set proper permissions
|
||||
echo "Setting permissions..."
|
||||
sudo chown -R 999:999 mongo-volume
|
||||
|
||||
# Scale mongo service back up
|
||||
echo "Scaling mongo service back up..."
|
||||
docker service scale utility-bills-tracker_mongo=1
|
||||
|
||||
echo "Restore completed successfully!"
|
||||
echo "Safety backup saved as: $SAFETY_BACKUP"
|
||||
Reference in New Issue
Block a user