【问题标题】:BackUp Odoo 8 Windows erreur zero size file备份 Odoo 8 Windows 错误零大小文件
【发布时间】:2016-08-24 10:44:14
【问题描述】:

我对 db_backup openerp 7 模块进行了特定开发,以在版本 8 Odoo 上运行。

所以它已正确安装并进行备份 问题是 sql 文件大小为零 KB

这是代码 backup_scheduler.py

import xmlrpclib
import socket
import os
import time
import base64
from openerp.osv import fields,osv,orm
from openerp import tools, netsvc
from openerp.tools.translate import _
import logging
_logger = logging.getLogger(__name__)


def execute(connector, method, *args):
    res = False
    try:        
        res = getattr(connector,method)(*args)
    except socket.error,e:        
            raise e
    return res

addons_path = tools.config['addons_path'] + '/auto_backup/DBbackups'

class db_backup(osv.Model):
    _name = 'db.backup'

    def get_db_list(self, cr, user, ids, host='localhost', port='8069', context={}):
        uri = 'http://' + host + ':' + port
        conn = xmlrpclib.ServerProxy(uri + '/xmlrpc/db')
        db_list = execute(conn, 'list')
        return db_list

    _columns = {
                    'host' : fields.char('Host', size=100, required='True'),
                    'port' : fields.char('Port', size=10, required='True'),
                    'name' : fields.char('Database', size=100, required='True',help='Database you want to schedule backups for'),
                    'bkp_dir' : fields.char('Backup Directory', size=100, help='Absolute path for storing the backups', required='True')
                }

    _defaults = {
                    'bkp_dir' : lambda *a : addons_path,
                    'host' : lambda *a : 'localhost',
                    'port' : lambda *a : '8069'
                 }

    def _check_db_exist(self, cr, user, ids):
        for rec in self.browse(cr,user,ids):
            db_list = self.get_db_list(cr, user, ids, rec.host, rec.port)
            if rec.name in db_list:
                return True
        return False

    _constraints = [
                    (_check_db_exist, _('Error ! No such database exists!'), [])
                    ]

    def schedule_backup(self, cr, user, context={}):
        conf_ids= self.search(cr, user, [])
        confs = self.browse(cr,user,conf_ids)
        for rec in confs:
            db_list = self.get_db_list(cr, user, [], rec.host, rec.port)
            if rec.name in db_list:
                try:
                    if not os.path.isdir(rec.bkp_dir):
                        os.makedirs(rec.bkp_dir)
                except:
                    raise
                bkp_file='%s_%s.sql' % (rec.name, time.strftime('%Y%m%d_%H_%M_%S'))
                file_path = os.path.join(rec.bkp_dir,bkp_file)
                fp = open(file_path,'wb')
                uri = 'http://' + rec.host + ':' + rec.port
                conn = xmlrpclib.ServerProxy(uri + '/xmlrpc/db')
                bkp=''
                try:
                    bkp = execute(conn, 'dump', tools.config['admin_passwd'], rec.name)
                except:
                    logger.notifyChannel('backup', netsvc.LOG_INFO, "Could'nt backup database %s. Bad database administrator password for server running at http://%s:%s" %(rec.name, rec.host, rec.port))
                    continue
                bkp = base64.decodestring(bkp)
                fp.write(bkp)
                fp.close()
            else:
                logger.notifyChannel('backup', netsvc.LOG_INFO, "database %s doesn't exist on http://%s:%s" %(rec.name, rec.host, rec.port))

db_backup()

【问题讨论】:

    标签: postgresql openerp backup odoo-8


    【解决方案1】:

    这可能是因为后端发生了错误,没有传播回客户端。如果您在备份时检查服务器日志,您可能会发现问题。

    注意如果您需要一个脚本来从 v7、v8 或 v9 服务器获取备份或将数据库恢复到 v7、v8 或 v9 服务器,请查看https://github.com/daramousk/odoo_remote_backup

    我为此特定原因开发了一个脚本,您可以使用或更改它来解决您的问题。

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2015-03-12
      • 1970-01-01
      相关资源
      最近更新 更多