程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python automatically backs up SVN version libraries and copies them to remote host scripts

編輯:Python
#!/usr/bin/python
-- coding: utf-8 --
import os
import re
import tarfile
import datetime
import pexpect
basedir='/data/bak/' # Folder
iplist=['']# IP Address
def get_list(txt_file):
ret_list = []
fin = open(txt_file,'r')
for line in fin:
if (re.match('^\s*$',line)): # Skip blank lines
continue
else:
line = line.lstrip()
line = line.rstrip() # Enter (\n) Get rid of
ret_list.append(line)
#print('debug info of get_list :\n',ret_list)
return ret_list
def copysvn(filelist): # This function is mainly to complete 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 + ' [email protected]:/data/databak/FilesBack/')
scp.expect('.ssword:*')
scp.sendline(' password ')
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/' # Folder
iplist=['']# IP Address
def get_list(txt_file):
ret_list = []
fin = open(txt_file,'r')
for line in fin:
if (re.match('^\s*$',line)): # Skip blank lines
continue
else:
line = line.lstrip()
line = line.rstrip() # Enter (\n) Get rid of
ret_list.append(line)
#print('debug info of get_list :\n',ret_list)
return ret_list
def copysvn(filelist): # This function is mainly to complete 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 + ' [email protected]:/data/databak/FilesBack/')
scp.expect('.ssword:*')
scp.sendline(' password ')
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</pre> 

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved