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

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

Odoo数据库管理界面

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

将显示以下屏幕:

单击Backup链接,将显示一个新的弹出窗口。

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

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

从命令行创建数据库备份

现在,我们知道如何通过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_DIRODOO_DATABASEADMIN_PASSWORD变量。

最后一步是创建一个新的Cron作业,该作业每天在01:30 am上运行

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

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

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

恢复Odoo数据库

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

单击Restore Database按钮,将显示一个新的弹出窗口。

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

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

取决于数据库的大小和您的Internet速度,还原过程可能需要一些时间。

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

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.

结论

本教程向您介绍了如何使用cronjob创建Odoo数据库的每日自动备份。

如果您有任何问题或反馈,请随时发表评论。

如果你喜欢我们的内容可以选择在下方二维码中捐赠我们,或者点击广告予以支持,感谢你的支持