xml地图|网站地图|网站标签 [设为首页] [加入收藏]

智能家电

当前位置:美高梅游戏网站 > 智能家电 > SVN版本库的备份及迁移

SVN版本库的备份及迁移

来源:http://www.gd-chuangmei.com 作者:美高梅游戏网站 时间:2019-09-05 09:02

[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()  #将回车(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  + ' [email protected]:/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 -*-

图片 1

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  + ' [email protected]:/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

1.备份某个版本库:

 

svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile

] #!/usr/bin/python # -*- coding: utf-8 -*- import os import re import tarfile import datetime import pexpect basedir=/data/bak/ #文件夹 iplist=[]# IP地址 def get_list(...

eg:svnadmin dump gaiaxis > d:瓦片打包转换工具

1.导入某个版本库:

svnadmin load newrepos < dumpfile

 

更详细参考 

 

初级篇:

 

 

 

       版本库数据的移植:svnadmin dump、svnadmin load

 

导出:

 

$svnlook youngest myrepos //查看到目前为止最新的版本号

 

$svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile

 

导入:

 

$svnadmin load newrepos < dumpfile

 

 

 

中级篇:

 

$svnadmin dump myrepos –r 23 >rev-23.dumpfile           //将version23导出

 

$svnadmin dump myrepos –r 100:200 >rev-100-200.dumpfile  //将version100~200导出

 

对比较大的库可以分解成几个文件导出,便于备份

 

$svnadmin dump myrepos –r 0:1000 >0-1000.dumpfile

 

$svnadmin dump myrepos –r 1001:2000 --incremental >1001-2000.dumpfile

 

$svnadmin dump myrepos –r 2001:3000 --incremental >2001:3000.dumpfile

 

在导入时,可以将这几个备份文件装载到一个新的版本库中

 

$svnadmin load myrepos < 0-1000.dumpfile

 

$svnadmin load myrepos < 1001-2000.dumpfile

 

$svnadmin load myrepos < 2001:3000.dumpfile

 

 

 

 

 

高级篇:

 

    过滤版本库历史:

本文由美高梅游戏网站发布于智能家电,转载请注明出处:SVN版本库的备份及迁移

关键词: