DevOps/SVN

[SVN] 백업(backup) 및 복원(load) 방법

cob 2024. 1. 19. 15:31

 

 

1. 전체 백업

가장 단순하면서 쉬운 전체 백업 방법이 있다. 저장소를 압축하고 이관 대상 서버로 들고 가서 풀어주면 끝!

 

1-1) 백업

repository 저장소 전체를 압축
// svn 프로세스 종료
kill -9 [svn PID]

// 저장소를 압축한다. (ex : tar -cvf repo_20240118.tar ./svn)
tar -cvf [압축파일명] ./[svn 저장소 경로]
  • 압축 과정에서 커밋이 일어나면 안되기 때문에 꼭 svn을 종료시켜야 한다.

 

1-2) 복원

이관 대상 서버에 svn이 설치되어 있어야 하며, 해당 svn 버전을 동일하게 맞춰야 오류가 이상 없이 실행이 가능하다.
// 압축 해제
tar -xvf [압축파일]
  • 리포지토리 개별적으로 복원할 경우 svn 버전이 달라도 호환 가능하게 할 수 있지만, 압축 파일로 백업을 진행할 경우 기존 svn 버전과 맞추어 줘야 한다. (특정 버전 설치를 지원하지 않기 때문에 버전이 다를 경우 수동으로 설치해 줘야 한다.)

 

 


2. repository 백업

repository의 dump파일을 생성하여 백업 후 복원하는 방법으로, 안전하게 백업 가능하다.

 

2-1) 원본 백업

// 백업하고 싶은 리포지토리 > 백업 파일명
// ex : svnadmin dump JEX > JEX.dump
svnadmin dump [리포지토리명] > [백업파일]

dump 백업

  • 원본 그대로 백업하기 때문에 리비전이 많을 경우 오랜 시간이 걸릴 수 있다.

 

 

2-2) 최신 리비전(Head 리비전)까지 백업

// ex : svnadmin dump -r HEAD JEX > JEX.dump
svnadmin dump -r HEAD [리포지토리명] > [백업파일]
  • -r HEAD : 최신 리비전부터 백업하게 된다. 만약 특정 리비전을 지정하고 싶다면 -r 100 이런 식으로 설정하면 된다.

 

 

2-3) 복원

이관 대상 서버에서 svn을 설치하고(ex : yum install svn), 저장소에서 리포지토리를 생성 후 복원(load)한다. 
// 해당 명령어로 호환 가능 버전들이 출력된다.
svnadmin create --help

// 호환 가능하게 리포지토리를 생성
// ex : svnadmin create --pre-1.6-compatible JEX
svnadmin create [호환 버전] [리포지토리명]

// 생성한 리포지토리에 복원 
// ex : svnadmin load JEX < JEX.dump
svnadmin load [리포지토리명] < [백업파일]

 

 

2-4) hooks, conf 파일 복사

리비전 버전만 복원 가능하기 때문에 기존 리포지토리 안에 있는 hooks, conf 파일을 복사해서 덮어쓰기 한다.
// 이관 서버에 conf, hooks를 가져와 리포지터리 안에 만들어졌던 파일에 덮어씌운다
cp -r conf [리포지토리 경로]
cp -r hooks [리포지토리 경로]

 

 

이제 SVN을 기동하면 끝!!!

 

반응형

'DevOps > SVN' 카테고리의 다른 글

[SVN] Ubuntu SVN 설치 및 자동 실행 방법  (0) 2023.12.04