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 [리포지토리명] > [백업파일]
- 원본 그대로 백업하기 때문에 리비전이 많을 경우 오랜 시간이 걸릴 수 있다.
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 |
---|