[go: up one dir, main page]

Menu

[599fc9]: / sqlutil / backup.py  Maximize  Restore  History

Download this file

45 lines (33 with data), 968 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from twisted.internet import utils
import gzip
from StringIO import StringIO
def dump( dbname, user=None, pswd=None ):
args = []
if user: args.append( '-u'+user )
if pswd: args.append( '-p'+pswd )
args.append( dbname )
dfr = utils.getProcessOutput( 'mysqldump', args )
return dfr
def gzipsave( s, name ):
gzf = gzip.GzipFile( name, 'wb' )
gzf.write( s )
gzf.close()
return gzf
def gzipstring( s ):
fd = StringIO()
gzf = gzip.GzipFile( None, 'wb', 9, fd )
gzf.write( s )
gzf.close()
gzs = fd.getvalue()
fd.close()
return gzs
def backup( fname, dbname, user=None, pswd=None ):
dfr = dump( dbname, user, pswd )
if fname: dfr.addCallback( gzipsave, fname )
else: dfr.addCallback( gzipstring )
return dfr
def db_backup( dbp, fname=None ):
dfr = dump( dbp.connkw['db'], dbp.connkw['user'], dbp.connkw['passwd'] )
if fname: dfr.addCallback( gzipsave, fname )
else: dfr.addCallback( gzipstring )
return dfr