Python 自动备份SVN版本库并复制到远程主机脚本
发布时间:2020-12-17 17:18:32 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/python # -*- coding: utf-8 -*- import osimport reimport tarfileimport datetimeimport pexpectbasedir='/data/bak/' #文件夹 iplist=[
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/python # -*- coding: utf-8 -*- import os import re import tarfile import datetime import pexpect basedir='/data/bak/' #文件夹 iplist=['']# IP地址 def get_list(txt_file): ret_list = [] fin = open(txt_file,'r') for line in fin: if (re.match('^s*$',line)): #跳过是空白的行 continue else: line = line.lstrip() line = line.rstrip() #将回车(n)去掉 ret_list.append(line) #print('debug info of get_list :n',ret_list) return ret_list def copy_svn(filelist): #这个函数主要是完成dump name= [] name=os.path.split(filelist) now = datetime.datetime.now() filename = now.strftime(basedir+iplist[0] +name[-1]+ '_%Y%m%d_%H%M%S.dump') os.system('svnadmin dump ' + filelist +' > '+filename ) tarname = now.strftime(basedir+iplist[0]+'_SVNDump_' +name[-1]+ '_%Y%m%d_%H%M%S.tar.gz') #print tarname tar = tarfile.open(tarname,'w|gz') tar.add(filename) tar.close() scp = pexpect.spawn('scp -r ' + tarname + ' [email?protected]:/data/databak/FilesBack/') scp.expect('.ssword:*') scp.sendline('密码') scp.expect(pexpect.EOF,timeout=None) olddate = (now - datetime.timedelta(5)).strftime("%Y%m%d") print olddate for i in os.listdir(basedir): file = re.search(r'w*[_](d{8})[_]d{6}.(tar.gz|dump)',i) #print i,file if file and olddate>=file.group(1): os.remove(basedir + file.group(0)) print 'del:',file.group(0) filelog=open("/data/bak/bak.log","a") filelog.write("============DATE:%s============= n"% now.strftime("%Y%m%d")) filelog.write("del file:%s n" % (basedir+file.group(0) )) filelog.write("============DATE:%s============= n"% now.strftime("%Y%m%d")) filelog.close() def copy_files(txt_file): geted_list = get_list(txt_file) for file in geted_list: copy_svn(file) if __name__ == '__main__': copy_files('/data/bak/filebak.txt') print '='*20,'ncopy_OKOKOKn','='*20 #!/usr/bin/python # -*- coding: utf-8 -*- import os import re import tarfile import datetime import pexpect basedir='/data/bak/' #文件夹 iplist=['']# IP地址 def get_list(txt_file): ret_list = [] fin = open(txt_file,line)): #跳过是空白的行 continue else: line = line.lstrip() line = line.rstrip() #将回车(n)去掉 ret_list.append(line) #print('debug info of get_list :n',ret_list) return ret_list def copy_svn(filelist): #这个函数主要是完成dump name= [] name=os.path.split(filelist) now = datetime.datetime.now() filename = now.strftime(basedir+iplist[0] +name[-1]+ '_%Y%m%d_%H%M%S.dump') os.system('svnadmin dump ' + filelist +' > '+filename ) tarname = now.strftime(basedir+iplist[0]+'_SVNDump_' +name[-1]+ '_%Y%m%d_%H%M%S.tar.gz') #print tarname tar = tarfile.open(tarname,'w|gz') tar.add(filename) tar.close() scp = pexpect.spawn('scp -r ' + tarname + ' [email?protected]:/data/databak/FilesBack/') scp.expect('.ssword:*') scp.sendline('密码') scp.expect(pexpect.EOF,timeout=None) olddate = (now - datetime.timedelta(5)).strftime("%Y%m%d") print olddate for i in os.listdir(basedir): file = re.search(r'w*[_](d{8})[_]d{6}.(tar.gz|dump)',file if file and olddate>=file.group(1): os.remove(basedir + file.group(0)) print 'del:',file.group(0) filelog=open("/data/bak/bak.log","a") filelog.write("============DATE:%s============= n"% now.strftime("%Y%m%d")) filelog.write("del file:%s n" % (basedir+file.group(0) )) filelog.write("============DATE:%s============= n"% now.strftime("%Y%m%d")) filelog.close() def copy_files(txt_file): geted_list = get_list(txt_file) for file in geted_list: copy_svn(file) if __name__ == '__main__': copy_files('/data/bak/filebak.txt') print '='*20,'='*20 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容