From ab245ba5e0b662127a8ae916af80a6a582b930e1 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Tue, 9 Jun 2026 04:12:08 +0000 Subject: [PATCH] Use gzip compression for PostgreSQL dump (was 306MB, exceeds GitHub 100MB limit) --- README.md | 2 +- backup.sh | 8 +++++--- restore.sh | 19 ++++++++++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 28fb6a1..821b1f7 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ The `database/fusionpbx.sql` dump in this repo is the heart of the backup. | Directory | Source | Contents | |-----------|--------|----------| -| `database/` | `pg_dump fusionpbx` | Complete FusionPBX database — extensions, dialplans, SIP, IVR, everything | +| `database/` | `pg_dump fusionpbx \| gzip` | Complete FusionPBX database (gzip compressed) — extensions, dialplans, SIP, IVR, everything | | `database/postgres_globals.sql` | `pg_dumpall --globals` | PostgreSQL roles and passwords | | `freeswitch/` | `/etc/freeswitch/` | vars.xml, sip_profiles, key autoload configs | | `fusionpbx-app/` | `/var/www/fusionpbx/resources/` | config.php (DB credentials) | diff --git a/backup.sh b/backup.sh index ae6a86a..df1fdb9 100644 --- a/backup.sh +++ b/backup.sh @@ -41,9 +41,11 @@ mkdir -p database freeswitch/autoload_configs freeswitch/sip_profiles \ # devices, voicemail, users) lives here. # --------------------------------------------------------------------------- log "Dumping PostgreSQL fusionpbx database" -su -c "pg_dump --clean --if-exists fusionpbx" postgres > database/fusionpbx.sql 2>/dev/null -DUMP_SIZE=$(wc -c < database/fusionpbx.sql) -log " DB dump: $(numfmt --to=iec $DUMP_SIZE 2>/dev/null || echo ${DUMP_SIZE}B)" +su -c "pg_dump --clean --if-exists fusionpbx" postgres 2>/dev/null | gzip > database/fusionpbx.sql.gz +# Remove old uncompressed dump if it exists +rm -f database/fusionpbx.sql +DUMP_SIZE=$(wc -c < database/fusionpbx.sql.gz) +log " DB dump (compressed): $(numfmt --to=iec $DUMP_SIZE 2>/dev/null || echo ${DUMP_SIZE}B)" # Also dump roles/users su -c "pg_dumpall --globals-only" postgres > database/postgres_globals.sql 2>/dev/null diff --git a/restore.sh b/restore.sh index 87951cd..f56066c 100644 --- a/restore.sh +++ b/restore.sh @@ -102,8 +102,15 @@ echo "" warn "This restores ALL FusionPBX config: extensions, dialplans, SIP gateways," warn "IVR menus, ring groups, devices, voicemail settings, users — everything." echo "" -info "Backup DB dump: $REPO_DIR/database/fusionpbx.sql" -info "Size: $(wc -l < $REPO_DIR/database/fusionpbx.sql 2>/dev/null) lines" +if [[ -f "$REPO_DIR/database/fusionpbx.sql.gz" ]]; then + info "Backup DB dump: $REPO_DIR/database/fusionpbx.sql.gz (compressed)" + info "Size: $(du -sh $REPO_DIR/database/fusionpbx.sql.gz 2>/dev/null | cut -f1)" +elif [[ -f "$REPO_DIR/database/fusionpbx.sql" ]]; then + info "Backup DB dump: $REPO_DIR/database/fusionpbx.sql" + info "Size: $(wc -l < $REPO_DIR/database/fusionpbx.sql 2>/dev/null) lines" +else + warn "No database dump found!" +fi echo "" if confirm "Stop services and restore PostgreSQL fusionpbx database?"; then @@ -117,7 +124,13 @@ if confirm "Stop services and restore PostgreSQL fusionpbx database?"; then # Drop and recreate the database su -c "psql -c 'DROP DATABASE IF EXISTS fusionpbx;'" postgres su -c "psql -c 'CREATE DATABASE fusionpbx OWNER fusionpbx;'" postgres - su -c "psql fusionpbx < '$REPO_DIR/database/fusionpbx.sql'" postgres + + # Restore from compressed or uncompressed dump + if [[ -f "$REPO_DIR/database/fusionpbx.sql.gz" ]]; then + zcat "$REPO_DIR/database/fusionpbx.sql.gz" | su -c "psql fusionpbx" postgres + else + su -c "psql fusionpbx < '$REPO_DIR/database/fusionpbx.sql'" postgres + fi success "Database restored" # Restore postgres globals (roles/passwords)