2016-08-24 8 views
0

バージョン8のOdooで動作するdb_backup openerp 7モジュールの具体的な開発を行います。BackUp Odoo 8 Windowsエラーファイルゼロサイズファイル

だから、それが正しくインストールされており、それは問題では、SQLファイルのサイズが0 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() 

答えて

0

であるということであるバックアップ を行いますバックエンドではクライアントに伝播しません。バックアップを取った時点でサーバーログをチェックすると、おそらく問題が表示されます。

あなたからのバックアップを取得したり、V7にデータベースを復元するためのスクリプトが必要な場合は、V8またはV9サーバがhttps://github.com/daramousk/odoo_remote_backup

を見て私は、この特定の理由のためのスクリプトを開発していることができます使用または変更して問題を解決してください。