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"