#!/bin/bash # Installs the daily PostgreSQL backup for PolyLLM on the deployment node (run ON the node). set -euo pipefail mkdir -p ~/backups/polyllm ~/Library/LaunchAgents cat > ~/backups/polyllm/backup.sh <<'SH' #!/bin/bash set -euo pipefail export PATH="/opt/homebrew/opt/postgresql@17/bin:/opt/homebrew/bin:$PATH" out=~/backups/polyllm/polyllm-$(date +%Y%m%d).sql.gz pg_dump polyllm | gzip -9 > "$out.tmp" && mv "$out.tmp" "$out" find ~/backups/polyllm -name 'polyllm-*.sql.gz' -mtime +14 -delete echo "$(date -Iseconds) ok $(du -h "$out" | cut -f1)" >> ~/backups/polyllm/backup.log SH chmod +x ~/backups/polyllm/backup.sh cat > ~/Library/LaunchAgents/dev.polyllm.backup.plist < Labeldev.polyllm.backup ProgramArguments/bin/bash$HOME/backups/polyllm/backup.sh StartCalendarIntervalHour3Minute45 StandardOutPath$HOME/backups/polyllm/launchd.log StandardErrorPath$HOME/backups/polyllm/launchd.log PLIST launchctl bootout gui/$(id -u)/dev.polyllm.backup 2>/dev/null || true launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/dev.polyllm.backup.plist ~/backups/polyllm/backup.sh && echo "backup installed + first dump done"