对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 52php.cn的小编两巴掌来看看吧!
# @param Python 自动备份SVN版本库并复制到远程主机脚本
# @author 编程之家 52php.cn|52php.cn
#!/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_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,'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.52php.cn
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|