# @param Python 自动备份SVN版本库并复制到远程主机脚本# @author 内存溢出 jb51.cc|jb51.cc #!/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 + ' root@IP:/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_OKOKOK\n','='*20 #!/usr/bin/python# -*- Coding: utf-8 -*- import osimport reimport tarfileimport datetimeimport pexpectbasedir='/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 + ' root@IP:/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,'='*20# End www.jb51.cc
总结 以上是内存溢出为你收集整理的Python 自动备份SVN版本库并复制到远程主机用法示例全部内容,希望文章能够帮你解决Python 自动备份SVN版本库并复制到远程主机用法示例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)