Initial resurrection kit — 81 scripts, 62 references, configs, systemd units, crons, Docker compose files, Caddy config, master README
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
BACKUP_DIR="/tmp/unms-backup-$(date +%Y%m%d_%H%M%S)"
|
||||
BUCKET="itpropartner-backups"
|
||||
AWS_ENDPOINT="https://s3.us-east-1.wasabisys.com"
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo "=== UISP/UNMS Backup — $(date) ==="
|
||||
|
||||
# 1. Dump PostgreSQL database(s)
|
||||
echo "→ Dumping PostgreSQL databases..."
|
||||
mkdir -p "$BACKUP_DIR/postgres"
|
||||
|
||||
# Get list of databases from the running container
|
||||
DB_NAMES=$(docker exec unms-postgres psql -U postgres -t -c "SELECT datname FROM pg_database WHERE datistemplate = false;" 2>/dev/null | grep -v '^\s*$' | tr -d ' ')
|
||||
|
||||
for DB in $DB_NAMES; do
|
||||
echo " Dumping: $DB"
|
||||
docker exec unms-postgres pg_dump -U postgres -d "$DB" --format=custom \
|
||||
2>/dev/null > "$BACKUP_DIR/postgres/${DB}.dump" || \
|
||||
docker exec unms-postgres pg_dump -U postgres -d "$DB" --format=custom \
|
||||
> "$BACKUP_DIR/postgres/${DB}.dump" 2>/dev/null || \
|
||||
echo " WARN: Could not dump $DB (may not exist anymore)"
|
||||
done
|
||||
|
||||
# Also dump the entire Postgres cluster for completeness
|
||||
echo " Dumping all globals..."
|
||||
docker exec unms-postgres pg_dumpall -U postgres -g 2>/dev/null > "$BACKUP_DIR/postgres/globals.sql"
|
||||
|
||||
# 2. Copy Docker compose and config
|
||||
echo "→ Copying Docker compose & config..."
|
||||
mkdir -p "$BACKUP_DIR/unms-app"
|
||||
cp -a /home/unms/app/docker-compose.yml "$BACKUP_DIR/unms-app/" 2>/dev/null || true
|
||||
cp -a /home/unms/app/unms.conf "$BACKUP_DIR/unms-app/" 2>/dev/null || true
|
||||
cp -a /home/unms/app/metadata "$BACKUP_DIR/unms-app/" 2>/dev/null || true
|
||||
|
||||
# 3. Copy data directory (postgres data etc.)
|
||||
echo "→ Copying data directory (this may take a while)..."
|
||||
mkdir -p "$BACKUP_DIR/data"
|
||||
rsync -a --relative /home/unms/data/./ "$BACKUP_DIR/data/" 2>/dev/null || \
|
||||
cp -a /home/unms/data "$BACKUP_DIR/" 2>/dev/null || true
|
||||
|
||||
# 4. Save Docker image info for version pinning
|
||||
echo "→ Saving container image versions..."
|
||||
docker ps --format '{{.Image}}' | sort -u > "$BACKUP_DIR/images.txt"
|
||||
|
||||
# 5. Tar it all up
|
||||
echo "→ Creating archive..."
|
||||
ARCHIVE="/tmp/unms-full-backup-${DATE}.tar.gz"
|
||||
cd /tmp
|
||||
tar czf "$ARCHIVE" -C "$BACKUP_DIR" . 2>/dev/null
|
||||
|
||||
# 6. Upload to Wasabi S3
|
||||
echo "→ Uploading to Wasabi S3..."
|
||||
aws s3 cp "$ARCHIVE" "s3://${BUCKET}/uisp/${DATE}/" \
|
||||
--endpoint-url "$AWS_ENDPOINT" 2>&1
|
||||
|
||||
# 7. Cleanup
|
||||
echo "→ Cleaning up..."
|
||||
rm -rf "$BACKUP_DIR"
|
||||
rm -f "$ARCHIVE"
|
||||
|
||||
echo "=== Backup complete ==="
|
||||
echo "Bucket: ${BUCKET}/uisp/${DATE}/"
|
||||
Reference in New Issue
Block a user