def start(self, srcPath, dstPath): _log.debug('src %s' % srcPath) _log.debug('dst %s' % dstPath) for dirname, dirnames, filenames in os.walk(srcPath): for filename in filenames: srcfile = os.path.join(dirname, filename) self.createBackup(srcfile, srcPath, dstPath) for subdirname in dirnames: srcfolder = os.path.join(dirname, subdirname) self.checkdst(srcfolder, srcPath, dstPath)
def main(): _log.debug('started backupsyncronization') if len(sys.argv) == 3: src = sys.argv[1] dst = sys.argv[2] BackupSync().start(src, dst) for pairSrcDst in conf.backupPair.pair: BackupSync().start(pairSrcDst[0], pairSrcDst[1]) BackupSync().clearUnwanted(pairSrcDst[0], pairSrcDst[1]) _log.debug('exiting backupsyncronization')
def createBackup(self, srcfile, srcPath, dstPath): dstfile = os.path.join(dstPath, srcfile.split(srcPath)[1][1:]) if not os.path.exists(dstfile): _log.debug('creating file >> dst %s' % dstfile) shutil.copy(srcfile, dstfile) modtime = os.path.getmtime(srcfile) database.Database().updateDb(srcfile, modtime) return modtime = os.path.getmtime(srcfile) if database.Database().isModified(srcfile, modtime): shutil.copy(srcfile, dstfile) database.Database().updateDb(srcfile, modtime)
def updateDb(self, filename, currentmodtime): con = lite.connect('backup.db') with con: cur = con.cursor() cur.execute( "select modtime from backuplist where name='%s'" % filename) modtime = cur.fetchone() if not modtime: _log.debug('DBAdd %s | %s | %s' % (filename, modtime, currentmodtime)) con.execute("insert into backuplist values ('%s','%s')" % (filename, currentmodtime)) con.commit() return if str(modtime[0]) == str(currentmodtime): return #print ('DbUpdate %s | %s | %s'%(filename, modtime, currentmodtime)) _log.debug('DBUpdate %s | %s | %s' % (filename, modtime, currentmodtime)) con.execute("update backuplist set modtime = '%s' where name = '%s'" % ( currentmodtime, filename)) con.commit()
def checkDbAndCleanDst(self, dstfile, srcPath, dstPath): # since dstfile entry in DB is stored as srcfile srcfile = os.path.join(srcPath, dstfile.split(dstPath)[1][1:]) if not database.Database().checkDB(srcfile): _log.debug('removing file %s' % dstfile) os.remove(dstfile)
def checkdst(self, srcfolder, srcPath, dstPath): dstfolder = os.path.join(dstPath, srcfolder.split(srcPath)[1][1:]) if not os.path.exists(dstfolder): _log.debug('creating folder >> dst %s' % dstfolder) os.mkdir(dstfolder)