49 lines
1.2 KiB
Bash
Executable File
49 lines
1.2 KiB
Bash
Executable File
#!/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
|
|
|
|
|