initial commit
This commit is contained in:
Executable
+83
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
### CONFIG ###
|
||||
DATE=$(date +%F)
|
||||
BASE_BACKUP_DIR="$HOME/backups/synapse"
|
||||
BACKUP_DIR="$BASE_BACKUP_DIR/$DATE"
|
||||
|
||||
SYNAPSE_DIR="/opt/synapse"
|
||||
SYNAPSE_DATA_DIR="/opt/synapse/synapse-data/_data"
|
||||
|
||||
POSTGRES_SERVICE="pg"
|
||||
POSTGRES_DB="synapse"
|
||||
POSTGRES_USER="matrix"
|
||||
|
||||
NGINX_DIR="/etc/nginx"
|
||||
LETSENCRYPT_DIR="/etc/letsencrypt"
|
||||
|
||||
### PREP ###
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo "📦 Synapse backup started"
|
||||
echo "📅 Date: $DATE"
|
||||
echo "📁 Backup dir: $BACKUP_DIR"
|
||||
echo
|
||||
|
||||
cd "$SYNAPSE_DIR"
|
||||
|
||||
### 1️⃣ Stop ONLY Synapse
|
||||
echo "⏸ Stopping ONLY Synapse service (Postgres stays running)..."
|
||||
docker compose stop synapse
|
||||
echo
|
||||
|
||||
### 2️⃣ PostgreSQL backup
|
||||
echo "🗄 Backing up PostgreSQL database..."
|
||||
docker compose exec -T "$POSTGRES_SERVICE" \
|
||||
pg_dump -U "$POSTGRES_USER" -Fc "$POSTGRES_DB" \
|
||||
> "$BACKUP_DIR/synapse-postgres.dump"
|
||||
echo "✅ PostgreSQL backup done"
|
||||
echo
|
||||
|
||||
### 3️⃣ Synapse data backup
|
||||
echo "📁 Backing up Synapse data directory..."
|
||||
tar -cJvf "$BACKUP_DIR/synapse-data.tar.xz" \
|
||||
-C "$SYNAPSE_DATA_DIR" .
|
||||
echo "✅ Synapse data backup done"
|
||||
echo
|
||||
|
||||
### 4️⃣ Docker Compose config (ONLY docker-compose.yml)
|
||||
echo "🐳 Backing up docker-compose.yml..."
|
||||
cp "$SYNAPSE_DIR/docker-compose.yml" \
|
||||
"$BACKUP_DIR/docker-compose.yml"
|
||||
echo "✅ Docker Compose config backed up"
|
||||
echo
|
||||
|
||||
### 5️⃣ Nginx backup
|
||||
echo "🌐 Backing up Nginx config..."
|
||||
tar -czvf "$BACKUP_DIR/nginx.tar.gz" \
|
||||
"$NGINX_DIR"
|
||||
echo "✅ Nginx backup done"
|
||||
echo
|
||||
|
||||
### 6️⃣ Let's Encrypt backup
|
||||
#echo "🔐 Backing up Let's Encrypt certificates..."
|
||||
#tar -czvf "$BACKUP_DIR/letsencrypt.tar.gz" \
|
||||
# "$LETSENCRYPT_DIR"
|
||||
#echo "✅ Let's Encrypt backup done"
|
||||
#echo
|
||||
|
||||
### 7️⃣ Start Synapse again
|
||||
echo "▶ Starting Synapse service..."
|
||||
docker compose up -d synapse
|
||||
echo
|
||||
|
||||
### 8️⃣ Optional: Full combined archiveve (run with sudo)
|
||||
echo "📦 Creating full backup archive..."
|
||||
sudo tar -czvf "$BASE_BACKUP_DIR/full-backup-$DATE.tar.gz" \
|
||||
-C "$BASE_BACKUP_DIR" "$DATE"
|
||||
echo "✅ Full archive created"
|
||||
echo
|
||||
|
||||
echo "✅✅ Backup completed successfully"
|
||||
|
||||
Reference in New Issue
Block a user