SVN 실시간 백업

2968 단어 SVN실시간
한 번은 SVN 서버 기계가 고장나서 연구개발 부서 전체가 일을 할 수 없어서 스트레스가 모두 나 혼자 있었다.다행히도 곧 회복되었지만 사전에 준비를 하지 않아서 앞으로 이런 일을 겪을 수 없습니다. SVN과 같은 중요한 서버는 반드시 양방향으로 백업하고 신속하게 전환해야 합니다.
 
미러링 서버: 192.168.11.94
원본 서버: 192.168.11.194
서버 대칭복사 작업:
——————————————————————————————————————————————————————————
미러 서버에 대상 저장소를 만들려면 다음과 같이 하십시오.
svnadmin create/space/repos/Atest
 
pre-revprop-change 파일 수정(cp pre-revprop-change.tmpl pre-revprop-change)
#pre-revprop-change
 
#!/bin/sh
USER="$3"if [ "$USER"= "admin"]; then exit 0; fi echo "Only the svnsync user can change revprops">&2 exit 1
 
 
pre-revprop-change에 실행 가능한 권한이 있도록chmod 755 pre-revprop-change
 
초기화
svnsync init --username admin --paasword admin123 svn://192.168.11.94/Atest svn://192.168.11.194/Atest
 
데이터 동기화
svnsync sync --username admin --password admin521 svn://192.168.12.94/Atest
 
중간에 인터럽트를 보내면 다음 명령을 실행하고 다시 sync
svn propdel svn:sync-lock --revprop -r 0
 
원본 서버 작업:
——————————————————————————————————————————————————————————————
창고 아래post-commit 파일을 수정하고python에 익숙해지면 직접python이 실현됩니다
 
 
[python]  view plain copy
#!/usr/bin/python  
  • #coding=utf-8  

  •   
  • import os  

  • import commands  
  • import sys  

  • import logging  
  •   

  • def init_log(log_level,logpath):  
  •     logger = logging.getLogger()  

  •     ''''' 
  •     from logging.handlers import RotatingFileHandler 

  •     ro_hdlr=RotatingFileHandler(logpath, maxBytes=0,backupCount=5) 
  •     logger.addHandler(ro_hdlr) 

  •     ro_hdlr.doRollover() 
  •     '''  

  •     hdlr = logging.FileHandler(logpath)  
  •     formatter = logging.Formatter('%(asctime)s [%(levelname)-8s %(module)s:%(lineno)d] %(message)s')  

  •     hdlr.setFormatter(formatter)  
  •     logger.addHandler(hdlr)  

  •     logger.setLevel(log_level)  
  •   

  •     return logger  
  •   

  • log=init_log(0,'/space/repos/allconfig/log/sync.log')  
  •   

  •   
  • repos=os.path.basename(sys.argv[1])  

  • log.info("*"*20+repos)  
  •   

  • output=commands.getoutput('/usr/local/subversion/bin/svnsync sync --non-interactive --username admin --password admin123 svn://192.168.11.94/'+repos)  
  • log.info('sync log :'+output)  

  • post-commit에 실행 가능한 권한을 부여합니다.이렇게 하면 앞으로 이 프로젝트에서 누군가가 새로운 코드를 제출하면 미러 서버에 동기화할 수 있다.원본 서버가 고장나면 relocate를 사용하여 미러 서버로 전환하여 작업을 계속할 수 있지만 전환 과정에서 UUID가 잘못되었음을 알립니다. SVN 1.5 이상 버전에서는 미러 서버의 UUID를 수정할 수 있습니다.
     
    
    svnadmin setuuid /var/svn/repos-new 2109a8dd-854f-0410-ad31-d604008985ab

     
    SVN 1.4 버전에는 이 기능이 없습니다. 도구를 통해 entries 파일을 대량으로 수정할 수 있습니다.

    좋은 웹페이지 즐겨찾기