8a08bbc28a
change directory of backup files first run cleanup script then create backup start synapse service after db backup (do now wait for media files)
101 lines
2.3 KiB
Bash
Executable File
101 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
### CONFIG ###
|
|
DATE=$(date +%F)
|
|
#BASE_BACKUP_DIR="$HOME/backups/synapse"
|
|
BASE_BACKUP_DIR="/mnt/disk/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"
|
|
|
|
|
|
### remove old files ###
|
|
cd $BASE_BACKUP_DIR
|
|
echo "▶ Running cleanup script ..."
|
|
|
|
./cleanup-backups.sh --run
|
|
|
|
### PREP ###
|
|
echo "📦 Synapse backup started"
|
|
echo "📅 Date: $DATE"
|
|
echo "📁 Backup dir: $BACKUP_DIR"
|
|
echo
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
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
|
|
|
|
### 7️⃣ Start Synapse again
|
|
echo "▶ Starting Synapse service..."
|
|
docker compose up -d synapse
|
|
echo
|
|
|
|
### 3️⃣ Synapse data backup
|
|
echo "📁 Backing up Synapse data directory..."
|
|
tar -cJf "$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..."
|
|
sudo tar -czvf "$BACKUP_DIR/letsencrypt.tar.gz" \
|
|
"$LETSENCRYPT_DIR"
|
|
echo "✅ Let's Encrypt backup done"
|
|
echo
|
|
|
|
### 8️⃣ Optional: Full combined archiveve (run with sudo)
|
|
echo "📦 Creating full backup archive..."
|
|
tar -czvf "$BASE_BACKUP_DIR/full-backup-$DATE.tar.gz" \
|
|
-C "$BASE_BACKUP_DIR" "$DATE"
|
|
echo "✅ Full archive created"
|
|
echo
|
|
|
|
### Remove the backup dir after full archive
|
|
cd $BASE_BACKUP_DIR
|
|
|
|
echo "📦 Removing the Backup directory: $DATE"
|
|
sudo rm -r $BACKUP_DIR
|
|
echo "Backup directory removed."
|
|
echo
|
|
|
|
echo "✅✅ Backup completed successfully"
|
|
echo
|