Private
Public Access
chg: pkg: add backup/restore scripts #15
Deploy to Production / deploy (push) Successful in 3m26s
Deploy to Production / deploy (push) Successful in 3m26s
This commit is contained in:
Executable
+61
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
PROJECT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
||||
cd "$PROJECT_DIR"
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 <backup-file>"
|
||||
echo "Example: $0 backups/mineseeker-minio.2026-08-18.120000.tar.gz"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_FILE=$1
|
||||
if [ ! -f "$BACKUP_FILE" ]; then
|
||||
echo "Error: Backup file not found: $BACKUP_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_DIR=$(CDPATH= cd -- "$(dirname -- "$BACKUP_FILE")" && pwd)
|
||||
BACKUP_NAME=$(basename "$BACKUP_FILE")
|
||||
|
||||
CONTAINER_ID=$(docker compose ps -q minio)
|
||||
if [ -z "$CONTAINER_ID" ]; then
|
||||
echo "Error: The MineSeeker MinIO service is not running."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VOLUME_NAME=$(docker inspect "$CONTAINER_ID" --format '{{range .Mounts}}{{if eq .Destination "/data"}}{{.Name}}{{end}}{{end}}')
|
||||
if [ -z "$VOLUME_NAME" ]; then
|
||||
echo "Error: Could not determine the MinIO data volume."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Verifying MinIO archive..."
|
||||
docker run --rm \
|
||||
--volume "$BACKUP_DIR:/backup:ro" \
|
||||
busybox tar -tzf "/backup/$BACKUP_NAME" > /dev/null
|
||||
echo "Archive OK."
|
||||
|
||||
printf 'WARNING: This erases all current MineSeeker MinIO data. Type yes to continue: '
|
||||
read -r CONFIRM
|
||||
if [ "$CONFIRM" != 'yes' ]; then
|
||||
echo "Aborted."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
restart_minio() {
|
||||
docker compose start minio || echo "Warning: Failed to restart MinIO."
|
||||
}
|
||||
trap restart_minio EXIT
|
||||
|
||||
echo "Stopping MinIO before restore..."
|
||||
docker compose stop minio
|
||||
|
||||
echo "Restoring MinIO backup: $BACKUP_FILE"
|
||||
docker run --rm \
|
||||
--volume "$VOLUME_NAME:/data" \
|
||||
--volume "$BACKUP_DIR:/backup:ro" \
|
||||
busybox sh -c 'find /data -mindepth 1 -maxdepth 1 -exec rm -rf {} + && tar xzf "/backup/$1" -C /data' sh "$BACKUP_NAME"
|
||||
|
||||
echo "Restore complete."
|
||||
Reference in New Issue
Block a user