본문 바로가기

공부중/작업하기

[Linux] SVN 디렉토리 백업 및 복구

덤프 파일 추출 명령어 

# svnadmin dump

 

1. 전체 백업

# svnadmin dump 디렉토리명 > 덤프 파일명

[주요 옵션]

-r revision_number : 리비전 번호를 지정하여 백업

-r revision_start_selected_number:revision_end_selected_number : 리비전 시작 번호와 끝 번호를 지정한 범위 백업

 

2. CentOS에서 SVN(Subversion) 저장소를 백업

- svn이 설치된 디렉터리에 가서 덤프를 추출한다.

# svnadmin dump 디렉토리명 > 생성할 디렉토리명

Ex) $ svnadmin dump example > example.dump

단, dump 추출 시 리비전 번호 확인 (마지막 리비전 번호)

 

3. CentOS에서 SVN 저장소를 복구

# yum install -y subversion

# svnadmin create svn_load : 저장소 생성

# svnadmin load svn_load < example.dump

# svnadmin -d -r /home/svn/ : svn 서버 구동

위와 같이 복구하는 경우 환경 설정 등은 복구되지 않아 접속이 되지 않을 수 있다.

(예를 들어, project, conf, passwd, svnserve.conf 등)

즉, 위와 같은 문제를 해결하기 위해 아래와 같은 방법으로 복구해야 한다.

 

(1) svn 다운로드

http://subversion.tigris.org/ 에서 subversion의 tar.gz 파일 다운로드

(2) ssl 확인

# whereis ssl 

ssl: /usr/share/ssl...

(3) 버전 확인

# openssl

OpenSSL > version

OpenSSL 0.9.6b [engine] 9 Jul 2001

OpenSSL > exit

(4) subversion 압축 풀기

# tar xvzf subversion-1.4.4.tar.gz

(5) configure & 컴파일

#./configure --with-zlib --with-ssl=/usr/share/ssl

# make; make install

(6) Repository 생성

# mkdir /home/svn

# cd /home/svn

# svnadmin create --fs-type fsfs test

(7) svn 프로토콜을 사용하기 위해 svnserve 설정

# svnserve -d -r /home/svn/

(8) 다른 서버에서 svn 접속 여부 확인

# svn checkout svn://xxx.xxx.xxx.xxx/test test

Checked out revision 0.

(9) svnserve에서 ID로 사용자 인증

# vi /home/svn/test/conf/svnserve.conf

...

anon-access = none

auth-access = none

password-db = passwd

realm = Test Repository

 

# vi /home/svn/test/conf/passwd

...

id = passwd

# svn checkout svn://xxx.xxx.xxx.xxx/test test

Authentication realm:<svn://xxx.xxx.xxx.xxx:port> Test Repository

Password for 'id':

Checked out revision 0.

(10) 클라이언트 설정

# whereis vi

vi: /bin/vi /usr/share/vi /usr/share/man/man1/vi.1.gz

# vi.bash_profile

SVN_EDITOR=/bin/vi

export SVN_EDITOR

(11) 기본 디렉터리 만들기 (trunk, branches, tags)

# svn mkdir svn://xxx.xxx.xxx.xxx/test/trunk

# svn mkdir svn://xxx.xxx.xxx.xxx/test/branches

# svn mkdir svn://xxx.xxx.xxx.xxx/test/tags

vi 화면이 나오고 로그를 입력하고 저장하면 커밋이 된다.

(12) import 하기

# svn import srcdir

svn://xxx.xxx.xxx.xxx/test/trunk

(13) checkout 하기

# svn co svn://xxx.xxx.xxx.xxx/test/trunk