Some checks failed
CI / Rust Check (push) Has been cancelled
CI / Rust Tests (push) Has been cancelled
CI / Frontend Check (push) Has been cancelled
CI / Build Tauri (macOS) (push) Has been cancelled
CI / Build Tauri (macOS Intel) (push) Has been cancelled
CI / Build Tauri (Linux) (push) Has been cancelled
Includes server (Rust/Axum API proxy with voice management), Tauri desktop client with Svelte UI, bot-sdk, Docker infra (Synapse, PostgreSQL, Coturn, Nginx), and CI/CD pipeline.
59 lines
2.2 KiB
Bash
Executable File
59 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
INFRA_DIR="$(dirname "$SCRIPT_DIR")"
|
|
BACKUP_DIR="${INFRA_DIR}/backups"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_PATH="${BACKUP_DIR}/${TIMESTAMP}"
|
|
|
|
mkdir -p "${BACKUP_PATH}"
|
|
|
|
echo "=== EifelDC Backup ==="
|
|
echo "Backup directory: ${BACKUP_PATH}"
|
|
echo ""
|
|
|
|
if command -v docker &>/dev/null && docker compose -f "${INFRA_DIR}/docker-compose.yml" ps &>/dev/null 2>&1; then
|
|
echo "[Docker Mode]"
|
|
|
|
echo "[1/4] Backing up PostgreSQL..."
|
|
docker compose -f "${INFRA_DIR}/docker-compose.yml" exec -T postgres \
|
|
pg_dump -U synapse synapse > "${BACKUP_PATH}/synapse_db.sql"
|
|
|
|
echo "[2/4] Backing up Synapse media..."
|
|
docker cp eifeldc-synapse:/data/media_store "${BACKUP_PATH}/media_store" 2>/dev/null || true
|
|
|
|
echo "[3/4] Backing up Synapse config..."
|
|
docker cp eifeldc-synapse:/data/homeserver.yaml "${BACKUP_PATH}/homeserver.yaml" 2>/dev/null || true
|
|
docker cp eifeldc-synapse:/data/signing.key "${BACKUP_PATH}/signing.key" 2>/dev/null || true
|
|
|
|
echo "[4/4] Backing up environment config..."
|
|
cp "${INFRA_DIR}/.env" "${BACKUP_PATH}/.env" 2>/dev/null || true
|
|
else
|
|
echo "[Native Mode]"
|
|
|
|
echo "[1/3] Backing up PostgreSQL..."
|
|
sudo -u postgres pg_dump synapse > "${BACKUP_PATH}/synapse_db.sql" 2>/dev/null || echo "Warning: Could not dump database"
|
|
|
|
echo "[2/3] Backing up Synapse data..."
|
|
SYNAPSE_DIR="${SYNAPSE_DIR:-/opt/eifeldc/synapse-data}"
|
|
cp -r "${SYNAPSE_DIR}/homeserver.yaml" "${BACKUP_PATH}/" 2>/dev/null || true
|
|
cp -r "${SYNAPSE_DIR}/signing.key" "${BACKUP_PATH}/" 2>/dev/null || true
|
|
cp -r "${SYNAPSE_DIR}/media_store" "${BACKUP_PATH}/" 2>/dev/null || true
|
|
|
|
echo "[3/3] Backing up environment config..."
|
|
cp "${INFRA_DIR}/.env" "${BACKUP_PATH}/.env" 2>/dev/null || true
|
|
fi
|
|
|
|
COMPRESSED="${BACKUP_DIR}/eifeldc_backup_${TIMESTAMP}.tar.gz"
|
|
tar -czf "${COMPRESSED}" -C "${BACKUP_DIR}" "${TIMESTAMP}"
|
|
rm -rf "${BACKUP_PATH}"
|
|
|
|
echo ""
|
|
echo "Backup saved: ${COMPRESSED}"
|
|
echo ""
|
|
|
|
KEEP_COUNT=7
|
|
ls -t "${BACKUP_DIR}"/eifeldc_backup_*.tar.gz 2>/dev/null | tail -n +$((KEEP_COUNT + 1)) | xargs -r rm --
|
|
echo "Old backups cleaned (keeping latest ${KEEP_COUNT})"
|
|
echo "Done!" |