Created
January 5, 2025 08:43
-
-
Save GabbasovDinar/2401dff1455c23b3c16338301c4505a0 to your computer and use it in GitHub Desktop.
Odoo Database Backup Shell Script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# Load environment variables | |
if [ -f .env ]; then | |
export $(grep -v '^#' .env | xargs) | |
fi | |
# Parameters | |
DB_HOST=${DB_HOST:-"localhost"} | |
DB_PORT=${DB_PORT:-5432} | |
DB_USER=${DB_USER:-"odoo"} | |
DB_PASSWORD=${DB_PASSWORD:-"your_db_password"} | |
DB_NAME=${DB_NAME:-"odoo"} | |
BACKUP_DIR="./backups" | |
ODOO_CONTAINER_NAME=${ODOO_CONTAINER_NAME:-"odoo"} # Container name of Odoo | |
FILESTORE_PATH="/var/lib/odoo/filestore/$DB_NAME" # Path to filestore in container | |
# Ensure backup directory exists | |
mkdir -p "$BACKUP_DIR" | |
# Generate timestamped archive name | |
NOW=$(date '+%Y%m%d_%H%M%S') | |
BACKUP_ARCHIVE="${BACKUP_DIR}/${DB_NAME}_backup_${NOW}.tar.gz" | |
# Temporary directory for storing intermediate files | |
TMP_DIR=$(mktemp -d) | |
# Backup database | |
echo "Starting database backup..." | |
DB_DUMP_FILE="${TMP_DIR}/${DB_NAME}.dump" | |
PGPASSWORD="$DB_PASSWORD" pg_dump -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -Fc -f "$DB_DUMP_FILE" "$DB_NAME" | |
echo "Database dump created: $DB_DUMP_FILE" | |
# Backup filestore | |
if docker ps --format '{{.Names}}' | grep -q "^${ODOO_CONTAINER_NAME}$"; then | |
echo "Starting filestore backup from container: $ODOO_CONTAINER_NAME..." | |
FILESTORE_BACKUP_DIR="${TMP_DIR}/filestore" | |
mkdir -p "$FILESTORE_BACKUP_DIR" | |
docker exec "$ODOO_CONTAINER_NAME" tar -cf - "$FILESTORE_PATH" | tar -xf - -C "$FILESTORE_BACKUP_DIR" | |
echo "Filestore backup completed." | |
else | |
echo "Warning: Odoo container '$ODOO_CONTAINER_NAME' is not running. Skipping filestore backup." | |
fi | |
# Create a combined archive | |
echo "Creating combined backup archive: $BACKUP_ARCHIVE..." | |
tar -czf "$BACKUP_ARCHIVE" -C "$TMP_DIR" . | |
echo "Backup archive created: $BACKUP_ARCHIVE" | |
# Cleanup temporary files | |
rm -rf "$TMP_DIR" | |
echo "Temporary files cleaned up." | |
echo "Backup process completed successfully." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment