Python自动备份SVN版本库并复制到远程主机脚本[python高级教程]
#!/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() #将回车(
)去掉
ret_list.append(line)
#print("debug info of get_list :
",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=============
"% now.strftime("%Y%m%d"))
filelog.write("del file:%s
" % (basedir+file.group(0) ))
filelog.write("============DATE:%s=============
"% 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,"
copy_OKOKOK
","="*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() #将回车(
)去掉
ret_list.append(line)
#print("debug info of get_list :
",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=============
"% now.strftime("%Y%m%d"))
filelog.write("del file:%s
" % (basedir+file.group(0) ))
filelog.write("============DATE:%s=============
"% 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,"
copy_OKOKOK
","="*20
以上是 Python自动备份SVN版本库并复制到远程主机脚本[python高级教程] 的全部内容, 来源链接: utcz.com/z/540117.html