28 lines
1.4 KiB
Django/Jinja
28 lines
1.4 KiB
Django/Jinja
#!/bin/bash
|
|
set -euo pipefail
|
|
umask 007
|
|
|
|
BACKUP_DIR="{{ groupe_meditation_backup_dir }}"
|
|
RETENTION_DAYS="{{ groupe_meditation_backup_retention_days }}"
|
|
DB_NAME="{{ groupe_meditation_db_name }}"
|
|
DB_USER="{{ groupe_meditation_db_user }}"
|
|
DB_HOST="{{ groupe_meditation_db_host }}"
|
|
DATE="$(date +%Y-%m-%d_%H%M)"
|
|
|
|
mkdir -p "$BACKUP_DIR"
|
|
export PGPASSWORD="{{ groupe_meditation_db_password }}"
|
|
|
|
cd "{{ groupe_meditation_backend_dir }}"
|
|
"{{ groupe_meditation_backend_dir }}/venv/bin/python" "{{ groupe_meditation_deploy_dir }}/tenant_schemas.py"
|
|
"{{ groupe_meditation_backend_dir }}/venv/bin/python" "{{ groupe_meditation_deploy_dir }}/group_backup.py" all
|
|
|
|
pg_dump -U "$DB_USER" -h "$DB_HOST" -Fc "$DB_NAME" > "$BACKUP_DIR/app_${DATE}.dump"
|
|
for schema in $(PGPASSWORD="$PGPASSWORD" psql -U "$DB_USER" -h "$DB_HOST" -d "$DB_NAME" -Atc "SELECT tenant_schema FROM groupes WHERE tenant_schema IS NOT NULL ORDER BY tenant_schema"); do
|
|
pg_dump -U "$DB_USER" -h "$DB_HOST" -n "$schema" -Fc "$DB_NAME" > "$BACKUP_DIR/${schema}_${DATE}.dump"
|
|
done
|
|
find "$BACKUP_DIR" -name "grpmed_*.dump" -mtime +"$RETENTION_DAYS" -delete
|
|
find "$BACKUP_DIR" -name "app_*.dump" -mtime +"$RETENTION_DAYS" -delete
|
|
find "$BACKUP_DIR" -name "group_*.json" -mtime +"$RETENTION_DAYS" -delete
|
|
find "$BACKUP_DIR" -name "grp_*.dump" -mtime +"$RETENTION_DAYS" -delete
|
|
|
|
echo "[$(date)] Sauvegarde terminee: app_${DATE}.dump"
|