如何设置自动Odoo备份

时间:2020-03-05 15:31:06  来源:igfitidea点击:

在本教程中,我们将引导我们完成创建Odoo数据库的每日自动备份的过程。
Odoo是使用Python编写的最受欢迎的开源ERP系统,并使用PostgreSQL作为数据库后端。

Odoo将其数据存储在PostgreSQL数据库中。
定期备份数据库可以保护我们避免潜在的灾难性数据丢失,对于任何安装Odoo的人和所有人来说,这都是至关重要的。

Odoo数据库管理界面

Odoo数据库管理界面提供了用于备份,复制,删除,创建和还原数据库的工具。
使用数据库管理界面创建备份是轻而易举的事情。
只需打开浏览器并导航到'http://your_server_ip:8069/web/database/manager'。

我们将看到以下屏幕:

单击“备份”链接,将显示一个新的弹出窗口。

输入Odoo数据库主密码,然后单击蓝色的“备份”按钮来创建备份。

根据数据库大小,备份可能需要一些时间才能准备就绪。

从命令行创建数据库备份

现在,我们知道如何通过Odoo数据库管理界面创建备份,我们如何使用同一工具从命令行创建备份?
答案很简单。
使用'wget'或者'curl'。

两种工具都可以使用POST发送数据,我们可以使用POST将必要的变量传递给Odoo数据库工具。

在下面的示例中,我们的主密码为“ ADMIN_PASSWORD”,我们正在创建名为“ DB_NAME”的数据库的备份文件“ back_up_filename.zip”,该文件将保存在“ backup_dir”目录中。

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'而不是'curl',则可以使用以下命令:

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

如果要从远程位置而不是“ localhost”创建备份,则需要输入Odoo实例的URL。
在这种情况下,建议我们使用HTTPS,因为我们不希望密码通过Internet以纯文本格式发送。

我们可以在此处找到有关如何使用Nginx将Odoo配置为反向代理的更多信息。

设置自动Odoo备份

为了自动执行备份过程并定期备份我们的Odoo数据库,我们可以创建一个cron作业。

假设我们想每天在'01:30 am'备份我们的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

使用'chmod'使脚本可执行:

sudo chmod +x ~/backup_odoo.sh

不要忘记根据需要更改“ BACKUP_DIR”,“ ODOO_DATABASE”和“ ADMIN_PASSWORD”变量。

最后一步是创建一个新的cron作业,该作业每天在'01:30 am'进行:

crontab -e
30 1 * * * /home/<yourusername>/backup_odoo.sh

不要忘记为备份脚本设置正确的名称和路径。

我们可以修改脚本并实施更强大的备份解决方案,例如使用远程备份存储,保留每周和每月备份..etc。

还原Odoo数据库

要使用数据库管理界面还原数据库备份,请打开浏览器并导航到'http://your_server_ip:8069/web/database/manager'。

单击“还原数据库”按钮,将显示一个新的弹出窗口。

输入Odoo数据库主密码,选择备份文件,输入新的数据库名称,然后单击蓝色的“继续”按钮来还原数据库。

在还原数据库之前,我们将需要删除数据库或者使用其他数据库名称。

根据数据库大小和Internet速度,还原过程可能需要一些时间。

我们还可以从命令行还原数据库:

curl -F 'master_pwd=superadmin_passwd' -F backup_file=@/opt/odoo/odoo_backups/db1.2016-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.