odoo数据库备份脚本文件

admin 2020-6-9 13520

odoo数据库备份脚本文件

#!/bin/bash

# Exit script if command fails
set -e

# Display Help
Help() {
  echo
  echo "odoo-backup"
  echo "###########"
  echo
  echo "Description: Backup odoo database."
  echo "Syntax: odoo-backup [-p|-d|-o|-h|help]"
  echo "Example: odoo-backup -p secret -d odoo -o /tmp -h https://odoo.example.com"
  echo "options:"
  echo "  -p    Odoo master password. Defaults to \$ODOO_MASTER_PASSWORD env var."
  echo "  -d    Database name."
  echo "  -o    Output directory. Defaults to '/var/tmp'"
  echo "  -h    Odoo host. Defaults to 'http://localhost:8069'"
  echo "  help  Show odoo-backup manual."
  echo
}

# Show help and exit
if [[ $1 == 'help' ]]; then
    Help
    exit
fi

# Process params
while getopts ":p: :d: :o: :h:" opt; do
  case $opt in
    h) HOST="$OPTARG"
    ;;
    p) PASSWORD="$OPTARG"
    ;;
    d) DATABASE="$OPTARG"
    ;;
    o) DIR="$OPTARG"
    ;;
    \?) echo "Invalid option -$OPTARG" >&2
    Help
    exit;;
  esac
done

# Fallback to environment vars and default values
: ${PASSWORD:=${ODOO_MASTER_PASSWORD:='admin'}}
: ${DIR:='/var/tmp'}
: ${HOST:='http://localhost:8069'}
# Verify variables
[[ -z "$DATABASE" ]] && { echo "Parameter -d|database is empty" ; exit 1; }
[[ -z "$DIR" ]] && { echo "Parameter -d|dir is empty" ; exit 1; }
[[ -z "$HOST" ]] && { echo "Parameter -h|host is empty" ; exit 1; }

# Ensure output directory exists
mkdir -p $DIR

# Request backup with curl
curl -X POST \
  -F "master_pwd=${PASSWORD}" \
  -F "name=${DATABASE}" \
  -F "backup_format=zip" \
  -o ${DIR}/${DATABASE}.zip \
  ${HOST}/web/database/backup

# Validate zip file
unzip -q -t "${DIR}/${DATABASE}.zip"

# Notify if backup has finished
echo "The Odoo backup has finished: ${DIR}/${DATABASE}.zip"


最新回复 (0)
返回