从 odoo 中备份 Odoo 数据库
Backup Odoo db from within odoo
我需要在登录 odoo 时备份当前数据库。我应该能够使用一个按钮来完成它,所以假设我点击按钮,它的工作方式与管理数据库中的 odoo 默认备份相同,但我应该能够在登录时从内部完成它。
有什么办法可以实现吗?我知道这在 odoo 外部使用 bash 是可能的,但这不是我想要的。
通过使用此模块,您可以定期备份数据库
https://www.odoo.com/apps/modules/7.0/crontab_config/ (v7)
你也可以测试这个模块
https://www.odoo.com/apps/modules/6.1/db_backup_ept/(v6可以迁移到v7)
在您的情况下,您可以添加按钮来执行将由计划执行的功能。
您可以使用私人浏览器会话从登录屏幕访问数据库菜单,并在那里执行备份表单(您需要知道主密码才能访问它,在服务器配置文件中定义)。
转到your_odoo_instance/web/database/manager,您可以在其中查看所有已安装的数据库:
Odoo's Database Manager - Backup
您将需要为此任务定义的主密码。如果您不记得了,请查看服务器中的 odoo.conf 文件并检查 'admin_passwd' 条目。
您可以在 odoo 中从 "Database Management" 进行数据库备份..
在浏览器中输入 link,
http://localhost:8069/web/database/manager
只需替换上面的ip和端口link,你就会进入数据库管理界面,你可以进行以下与数据库相关的操作
- 创建
- 重复
- 掉落
- 备份
- 密码
- 恢复
备份的话,可以去这个linkhttp://localhost:8069/web/database/manager
。
- 您可以从那里创建备份。
- 您也可以恢复之前存在的备份。
Important
- 在此之前,只需为您的数据库设置主密码,以避免将来造成后果。
如果您想在登录时更改特定模型或字段。您可以通过 Odoo 提供的 export/import
操作来完成。从本地导出数据后,您可以将其导入您的服务器,因为您必须对其进行验证。
在某处添加一个按钮并像这样调用一个控制器。
@http.route('/backup/download', auth="user", type='http')
def backup(self, **kw):
ts = datetime.datetime.utcnow().strftime("%Y-%m-%d_%H-%M-%S")
filename = "%s_%s.zip" % (request.env.cr.dbname, ts)
headers = [
('Content-Type', 'application/octet-stream; charset=binary'),
('Content-Disposition', content_disposition(filename)),
]
dump_stream = db.dump_db(request.env.cr.dbname, None)
response = werkzeug.wrappers.Response(dump_stream, headers=headers, direct_passthrough=True)
return response
可以使用CURL下载全量备份(assets+DB),这种方式比pg_dump要快一些。
curl -X POST \
-F "master_pwd=${ADMIN_PASSWORD}" \
-F "name=${ODOO_DATABASE}" \
-F "backup_format=zip" \
-o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F-%T).zip \
${HOST}/web/database/backup
如果您愿意,您可以将其包裹在自定义(您自己的)Odoo add-on 中。希望这有帮助。
ODOO的数据库dump方法有很多种。您也可以从 ODOO 商店下载应用程序以自动执行此操作。在这里,我可以建议一个插件,它将根据您设置的月、日、小时为基础执行此数据库自动备份。这是一种高度可靠和高效的方式,该模块可以在不影响 odoo 进程的情况下处理大型数据库。
ODOO DATABASE AUTOMATIC BACKUP
使用此模块进行自动备份
活跃的开发者模式。
转到设置>常规设置>数据库备份
设置数据库名称和要保存数据库的路径。
我需要在登录 odoo 时备份当前数据库。我应该能够使用一个按钮来完成它,所以假设我点击按钮,它的工作方式与管理数据库中的 odoo 默认备份相同,但我应该能够在登录时从内部完成它。
有什么办法可以实现吗?我知道这在 odoo 外部使用 bash 是可能的,但这不是我想要的。
通过使用此模块,您可以定期备份数据库
https://www.odoo.com/apps/modules/7.0/crontab_config/ (v7)
你也可以测试这个模块
https://www.odoo.com/apps/modules/6.1/db_backup_ept/(v6可以迁移到v7)
在您的情况下,您可以添加按钮来执行将由计划执行的功能。
您可以使用私人浏览器会话从登录屏幕访问数据库菜单,并在那里执行备份表单(您需要知道主密码才能访问它,在服务器配置文件中定义)。
转到your_odoo_instance/web/database/manager,您可以在其中查看所有已安装的数据库:
Odoo's Database Manager - Backup
您将需要为此任务定义的主密码。如果您不记得了,请查看服务器中的 odoo.conf 文件并检查 'admin_passwd' 条目。
您可以在 odoo 中从 "Database Management" 进行数据库备份..
在浏览器中输入 link,
http://localhost:8069/web/database/manager
只需替换上面的ip和端口link,你就会进入数据库管理界面,你可以进行以下与数据库相关的操作
- 创建
- 重复
- 掉落
- 备份
- 密码
- 恢复
备份的话,可以去这个linkhttp://localhost:8069/web/database/manager
。
- 您可以从那里创建备份。
- 您也可以恢复之前存在的备份。
Important
- 在此之前,只需为您的数据库设置主密码,以避免将来造成后果。
export/import
操作来完成。从本地导出数据后,您可以将其导入您的服务器,因为您必须对其进行验证。
在某处添加一个按钮并像这样调用一个控制器。
@http.route('/backup/download', auth="user", type='http')
def backup(self, **kw):
ts = datetime.datetime.utcnow().strftime("%Y-%m-%d_%H-%M-%S")
filename = "%s_%s.zip" % (request.env.cr.dbname, ts)
headers = [
('Content-Type', 'application/octet-stream; charset=binary'),
('Content-Disposition', content_disposition(filename)),
]
dump_stream = db.dump_db(request.env.cr.dbname, None)
response = werkzeug.wrappers.Response(dump_stream, headers=headers, direct_passthrough=True)
return response
可以使用CURL下载全量备份(assets+DB),这种方式比pg_dump要快一些。
curl -X POST \
-F "master_pwd=${ADMIN_PASSWORD}" \
-F "name=${ODOO_DATABASE}" \
-F "backup_format=zip" \
-o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F-%T).zip \
${HOST}/web/database/backup
如果您愿意,您可以将其包裹在自定义(您自己的)Odoo add-on 中。希望这有帮助。
ODOO的数据库dump方法有很多种。您也可以从 ODOO 商店下载应用程序以自动执行此操作。在这里,我可以建议一个插件,它将根据您设置的月、日、小时为基础执行此数据库自动备份。这是一种高度可靠和高效的方式,该模块可以在不影响 odoo 进程的情况下处理大型数据库。 ODOO DATABASE AUTOMATIC BACKUP
使用此模块进行自动备份
活跃的开发者模式。 转到设置>常规设置>数据库备份 设置数据库名称和要保存数据库的路径。