在本教程中,我们将引导您完成创建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_DIR
,ODOO_DATABASE
和ADMIN_PASSWORD
变量。
最后一步是创建一个新的Cron作业,该作业每天在01:30 am
上运行
crontab -e
30 1 * * * /home//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">
Redirecting...
Redirecting...
You should be redirected automatically to target URL: /web/database/manager. If not click the link.
结论
本教程向您介绍了如何使用cronjob创建Odoo数据库的每日自动备份。
如果您有任何问题或反馈,请随时发表评论。