def backupDbAuto(dbName, targetDir, password, user, timeStamp): finalRes = [] if user is None: dbSysInst = dbSys.dbSysSmart() else: dbSysInst = dbSys.dbSysSmart(sessionBase.sessionInstanceBase(user)) beforeTimeStamp = dbSysInst.getTimeStamp() if dbName is None: dbList = dbSysInst.getDbNameList() else: dbList = [dbName] for i in dbList: print i res = backupDbSingle(i, targetDir, password, user, timeStamp, beforeTimeStamp) finalRes.extend(res) #res = dictListEncryptor(res, password) #res = dictListDecryptor(res) s = json.dumps(finalRes, sort_keys=True, indent=4) #s = json.dumps(finalRes) f = open(os.path.join(targetDir, str(dbName)+'_for_user_'+str(user)+'.json'),'w') f.write(s) f.close() dbSysInst = dbSys.dbSysSmart() c = cfg.configuration(dbSysInst) c[u"mongoBackupTimeStamp"] = beforeTimeStamp
def backupDbSingle(dbName, targetDir, password, user): if user is None: dbSysInst = dbSys.dbSysSmart() else: dbSysInst = dbSys.dbSysSmart(sessionBase.sessionInstanceBase(user)) db = dbSysInst.getDb(dbName) res = [] e = enc.encryptor() if not os.path.exists(targetDir): misc.ensureDir(targetDir) for i in db.keys(): #print i #values = db.testFunc(i) values = db[i] encryptedValues = [] for i in values: print i.encode('gbk', 'replace') encryptedValues.append(e.en(i, password)) j = {"key":e.en(i, password), "value":encryptedValues, "encHash":unicode(md5.new(password).hexdigest())} res.append(j) #print res s = json.dumps(res, sort_keys=True, indent=4) f = open(os.path.join(targetDir, dbName+'_for_user_'+str(user)+'.json'),'w') f.write(s) f.close()
def backupDbAuto(dbName, targetDir, password, user): if user is None: dbSysInst = dbSys.dbSysSmart() else: dbSysInst = dbSys.dbSysSmart(sessionBase.sessionInstanceBase(user)) if dbName is None: for i in dbSysInst.getDbNameList(): print i backupDbSingle(i, targetDir, password, user) else: backupDbSingle(dbName, targetDir, password, user)
def main(): parser = OptionParser() parser.add_option("-u", "--user", action="store",help="username for the database system",default = None) parser.add_option("-p", "--password", action="store",help="password for target output",default = u'defaultPASS123') parser.add_option("-t", "--targetDir", action="store", help="database backup target directory",default = 'd:/tmp/backup') parser.add_option("-n", "--name", action="store", help="database name for backup",default = None) parser.add_option("-s", "--show", action="store", help="print time stamp of last backup",default = None) parser.add_option("-r", "--reset", action="store", help="reset backup timestamp",default = None) (options, args) = parser.parse_args() dbSysInst = dbSys.dbSysSmart() c = cfg.configuration(dbSysInst) if not (options.reset is None): del c[u"mongoBackupTimeStamp"] return if not c.has_key(u"mongoBackupTimeStamp"): t = None else: t = c[u"mongoBackupTimeStamp"] if not (options.show is None): print c[u"mongoBackupTimeStamp"] return #print options,args #tv = comparer.getMecacoreVector(options.case,options.tf,options.blk,options.point,options.ant) backupDbAuto(options.name, options.targetDir, options.password, options.user, t)
def backupDbSingle(dbName, targetDir, password, user, afterTimeStamp, beforeTimeStamp): if user is None: dbSysInst = dbSys.dbSysSmart() else: dbSysInst = dbSys.dbSysSmart(sessionBase.sessionInstanceBase(user)) db = dbSysInst.getDb(dbName) res = [] if not os.path.exists(targetDir): misc.ensureDir(targetDir) for i in db.keysDuring(afterTimeStamp, beforeTimeStamp): #print i #values = db.testFunc(i) values = db[i] j = {"db": dbName, "user": user, "key":i, "value":values, "t": beforeTimeStamp} res.append(j) return res
def importDb(input, password = None): dbSysInst = dbSys.dbSysSmart() sf = open(input, 'r') package = json.load(sf) en = enc.encryptorBase64Out(password) l = package["add"] if (password is None) and package.has_key("encPass"): print 'need password for importing' return if (not (password is None)): if unicode(str(md5.new(password).hexdigest())) != package["encPass"]: print 'pass not match:', unicode(str(md5.new(password+package["time-duration"]).hexdigest())), package["encPass"] return else: l = listEncryptor.dictListDecryptor(l, en) l = listEncryptor.dictListEncryptor(l) dbSysInst.importDb(l)