#!/bin/bash # Backup Odoo database script # Author: Your Name # Description: Dumps Odoo DB, manages backups, and sets permissions set -euo pipefail # Fail on error, undefined variables, and pipe errors # Load helper functions source /4server/sbin/helpers # Get contract info get_contract_info # Export Odoo database password export ODOO_DB_PASSWORD ODOO_DB_PASSWORD=$(echo "$SECRET" | jq -r '.psql') # Display basic info echo "UUID: $UUID" echo "Backup slots: $BACKUP_SLOTS" # Create backup filename FILENAME="$(date +"%Y%m%d_%H%M").zip" BACKUP_DIR="/BACKUP/$UUID" # Ensure backup directory exists mkdir -p "$BACKUP_DIR" # Perform database dump using docker doas docker exec "$UUID" odoo db \ --db_host beedb \ -r "$UUID" \ -w "$ODOO_DB_PASSWORD" \ --data-dir /home/odoo/.local/share/Odoo/ \ dump "$UUID" "/mnt/backup/$FILENAME" # Set permissions for backup files doas chmod 600 "$BACKUP_DIR"/* doas docker exec "$UUID" chown odoo:odoo -R /mnt/backup # Remove old backups beyond the configured slots ls -t "$BACKUP_DIR"/[0-9]*.zip 2>/dev/null | tail -n +$((BACKUP_SLOTS + 1)) | while read -r file; do echo "Deleting old backup: $file" rm -f "$file" done