Python自动备份SVN版本库并复制到远程主机脚本[python高级教程]

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

回到顶部