用curl 命令:
curl -X POST -F 'master_pwd=ADMIN_PASSWORD' -F 'name=DB_NAME' -F 'backup_format=zip' -o /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup
用 wget命令:
wget --post-data 'master_pwd=ADMIN_PASSWORD&name=DB_NAME&backup_format=zip' -O /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup
-------------------------------
设置自动备份 Odoo 数据库
为了自动执行备份过程并定期备份我们的 Odoo 数据库,我们可以创建一个 cron 作业。
假设我们希望每天凌晨 01:30 备份我们的 Odoo 数据库并保留最新的 7 个备份。
我们要创建一个简单的 bash 脚本 〜/backup_odoo.sh,您可以根据需要对其进行命名:
#!/bin/bash
# vars
BACKUP_DIR=~/odoo_backups
ODOO_DATABASE=db1
ADMIN_PASSWORD=superadmin_passwd
# create a backup directory
mkdir -p ${BACKUP_DIR}
# create a backup
curl -X POST \
-F "master_pwd=${ADMIN_PASSWORD}" \
-F "name=${ODOO_DATABASE}" \
-F "backup_format=zip" \
-o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F).zip \
http://localhost:8069/web/database/backup
# delete old backups
find ${BACKUP_DIR} -type f -mtime +7 -name "${ODOO_DATABASE}.*.zip" -delete
sudo chmod +x ~/backup_odoo.sh
> 不要忘了根据您的实际情况更改变量 BACKUP_DIR , ODOO_DATABASE 和 ADMIN_PASSWORD 的值。
最后一步是创建一个新的 cron 作业,每天凌晨 01:30 运行:
```bash
crontab -e
30 1 * * * /home/<yourusername>/backup_odoo.sh
不要忘记根据你的实际情况正确的设置备份脚本的名称和路径。
您可以修改脚本并实现更强大的备份解决方案,例如使用远程备份存储,保留每周和每月备份等等。
-----------------------------
命令行恢复 Odoo 数据库
我们还可以从命令行恢复数据库:
curl -F 'master_pwd=superadmin_passwd' -F backup_file=@/opt/odoo/odoo_backups/db1.2018-04-14.zip -F 'copy=true' -F 'name=db3' http://localhost:8069/web/database/restore
当然,您需要修改上面命令中使用的 Odoo Master 密码,数据库备份的路径和数据库名称。
如果恢复成功,输出应如下所示:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="/web/database/manager">/web/database/manager</a>. If not click the link.