您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

Python 自动备份SVN版本库并复制到远程主机脚本

2024/5/5 16:54:34发布9次查看
#!/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 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
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录