2014-11-14 6 views
2

:이 시점에서 파일의 내용을XMLRPC를 사용하여 데이터베이스를 백업하는 방법은 무엇입니까? 나는 다음과 같은 스크립트를 사용하여 백업에 내 데이터베이스를 시도하고

import xmlrpclib 

sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/db') 
backup_file = open('backup.dump', 'wb') # Same extension used by Odoo 
backup_file.write(sock.dump('mypassword', 'mydb')) 
backup_file.close() 

이 같은 것입니다 :

UEsDBBQAAAAIADGEbkVAyAv5JvGAAMH+wQEIAAAAZHVtcC5zcWzsvWtz3EaSNvrdvwLxbrzH5K7N 
GWv3ndjjGc8GTdG2ZinJI9LWzjlxogPsRlMYo4E2gJZE//pTV6CuQFUhE/RcFDFjNrrxZNYt88ms 
2+eff/L559n3Tdc/tMXtn2+yXd7n93lXZLvT4Ui+++ST2+u7rOvzvjgUdb/py0PRnPrsq+y3v2df 
Vc32J/vptirpr4t62+zK+oF88ekPd9/856e/l3D1Lm93m21T75v2QH6x6fqW/Kcjv2xqgfGuIND7 
U73ty6be3BOkgn6/z6uu0MQQgM2h6Lr8gf3gQ97WBOv3n1D9SfFe5Yfiy+xYHR+6n6vfZ3ePR/Lx 
+n/url/dvnj96vfZLZF0yL/MPv999vpDXbTkL1byqzfXl3fX4y+zF99kr17fkQcvbu9uJWD29sXd 
d9nt1XfXLy+z48NmS2qwaqh0TfyIYihy9frly+tXdxNq8B9k5FULJHtxm336/c1vjg+08Y5tsy12 
pzavsiqvH06kPj6lerA6L/J2+25zzPt3pIqOp/uq3H6m60t/tiv2+aki7ZzfV0V3zLcFbbtPjW8/ 
lP27TVPulObQCptvt82JNIz4ryzq3eXXN9djQbkSY2nJzwapX2ZqE7AXTdTs7JOM/Ct3WVn3xUPR 
ssZ59cPNzWfsi2Pe0s5RFfte/kL7oi0f3hnfkN5akH6Xt/m2J3jv8/aRdKSz3/3HuYG9bQsyIjZk 
tBQZ7fykRx+OGa0WOgzok+yXpi74j9uC9PNtWRXZfdNURV4LjFNL9Ng+bsYSaOAn8/mHtnQ9PnVF 
... 
... 

Odoo 데이터베이스 관리를 통해 백업 할 때 내가 얻으려고 노력하고있는 압축 파일을 얻습니다. 예를 test_2014-11-12_16-06-35Z.dump의 경우 :

enter image description here

유효한 Odoo 백업 파일에 모든 바이트를 "재구성"하는 방법이 있나요? StringIOByteIO으로 시도했지만 성공하지 못했습니다. 어떤 도움을 많이 주시면 감사하겠습니다.


솔루션 앙드레는 마침내 해결책을 가지고 @에

감사 :

import base64 
import xmlrpclib 

sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/db') 
backup_file = open('backup.dump', 'wb') 
backup_file.write(base64.b64decode(sock.dump('mypassword', 'mydb'))) 
backup_file.close() 

답변

2

덤프() 함수를 반환하기 전에 Base64에서 파일을 인코딩합니다. base64 명령을 사용하여 디코딩 할 수 있습니다.

base64 -d [dump file] > [decoded file] 
+1

정말 고마워요! base64 모듈을 사용하여 트릭을했습니다! –