본문 바로가기

Develop/Study

svn 백업 및 복원(Subversion Backup And Restore)

SVN Server 저장소 백업 및 복원 하기

1) 개요 SVN 사용 중 서버 이동 등의 이유로 백업해야할 경우를 위해 작성 되었습니다.

2) 사용방법

기존 저장소 백업하기(SVN Repository 백업하기.)

svnadmin dump [레파지토리 전체 경로] > [백업 파일 이름.dump]

예) svnadmin dump RepoName > RepoName_backup.dump


백업된 저장소 복원하기(SVN Repository Restoration)

svnadmin load [복원시킬 레파지토리 전체 경로] < [백업 파일 이름.dump]

예)

svnadmin create --fs-type fsfs RepoName

svnadmin load RepoName < RepoName_backup.dump



MAC OS X SVN Path

bin안에 있지 않고 x code app안으로 들어가면서 기존의 SVN X를 사용하던 유저는 SVN의 Path를 지정해 달라는 경고창을 볼 것이다.

SVN을 찾아봐도 명령어가 안 보일 것이다.

SVN bin Path : /Applications/Xcode.app/Contents/Developer/usr/bin/


MAC OS X svnX를 이용하여 SVN 사용하기

http://maskkwon.tistory.com/65


----------------------------------------------------

SVN 명령어

svnadmin dump

- 저장소 백업

- svnadmin dump [저장소 폴더명] > [덤프 파일명]

- ex) svnadmin dump project_sample > dump_project_sanmple_20010131

svnadmin load

- 저장소 복원

- svnadmin load [저장소 폴더명] < [덤프 파일명]

- ex) svnadmin create project_sample

svnadmin load  project_sample < dump_project_sanmple_20010131

svn checkout

- svn 서버에서 소스 내려받기

- svn checkout svn://192.168.2.2/App App

- svn checkout -r 100 svn://192.168.2.2/App App   (revision 100번 소스 받기)

-  svn checkout -r HEAD svn://192.168.9.128/sample_repos sample_HEAD     (마지막 리비전 받기)

- 자세한 것은 svn checkout --help 참고

svn export

    -  버전관리 정보 없는 깨끗한 사본을 받아옴
    - svn export --help
    - svn export -r 1 svn://192.168.0.12/sample_repos sample_pos
 

svn commit 파일명 or 폴더명 or ./

-  svn commit 했을 때 소스 파일에서 out of date 에러 날 때는 그 사이에 svn에 소스가 업데이트 됬다는 의미이다. 따라서, out of date 에러났을 때는 svn update을 실행해서 동기화를 한 후에 commit을 하면 된다.

- commit 하기전에는 update를 실행하여 out of date 에러를 막자.

- 예)

# svn commit

# svn commit ./test/test.h


svn resolved -R ./
   - 소스 충돌 날 때 이놈으로 풀면 됨.
svn cleanup
- 소스가 lock 되 있을 경우 이 명령으로 해제 한다. lock 되는 원인은 알아서 찾는다.


svn update

- 서버와 소스 동기화.

A  Added

D  Deleted

U  Updated

C  Conflict

G  Merged

E  Existed

- commit 하기전에는 소스 충돌을 막기 위해 update를 실행해야 한다.

- update를 했는데 에러가 났을 경우에는 각각의 revision을 따로 update 해본다. 경험상 한번에 할 경우에 드물게 에러가 나는 경우가 있다.

#svn update -r 100   --> 100은 revision number

#svn update -r 101


svn log

-  svn user가  commit한 로그 볼 때 사용한다.

#  svn log svn://192.168.9.128/ sample_repos     ==>  주의) svn path를 안주면 마지막 로그를 빼먹는다.

# svn log -l 10   (상위 10개의 로그만 보기)       ==> 주의) svn path를 안주면 마지막 로그를 빼먹는다.

# svn log -l 10  svn://192.168.9.128/sample_repos


- commit log 수정하기

#  svn propset --revprop -r [리비전번호] svn:log “수정할 메세지”

참고: http://altistory.net/929

# TortoiseSVN 사용할 때 show log 선택 후에 로그 패널에서 마우스 오른쪽 버튼 클릭하면 "Edit log message" 나온다.

svn mkdir

   -  repository에 folder 생성한다.

- #  svn mkdir svn://192.168.163.11/TEST_repo/ test_folder

svn import

   - 처음으로  repository에 파일 추가하기.

- 주의할점은 *.a 같은 파일은 추가 안될 수 있으니 --no-ignore 옵션 사용하기.

- # svn import import_path svn://192.168.163.11/TEST_repo/import_path --no-ignore

svn add

- 새로 만든 파일 추가 하기. import와 똑같이 사용 가능하다.

- # svn add  --no-ignore  [path]

svn delete (or del, remove)

- 파일, 폴더 삭제

- # svn del [FILE_NAME] or [DIR]

- # svn del svn://192.168.16.11/TEST_repo/test_dir

--> commit도 동시에 된다. help 참고.


svn switch(or sw)

- 저장소 이름 변경할 때

    # mv sample_repo1 sample_repo2 (su 로그인 후 저장소 이름을 직접 변경)

# svn switch --relocate svn:/192.168.9.128/sample_repo1  svn:/192.168.9.128/sample_repo2

--> repository에서 다운받은 곳에서 명령을 실행한다.

"svn: E155007: 작업 사본이 아닙니다.(Not a working copy)" 이 에러는 .svn 없는 곳에서 svn 명령을 실행

했을 때 발생한다.


-  저장소 IP 변경할 때

    # svn switch --relocate svn:/192.168.9.128/sample_repo1  svn:/192.168.0.12/sample_repo1

svn diff

- 두 revision 비교 또는 file 비교

- 참고:  http://pokute.tistory.com/201

변경된 파일만 출력

#  svn diff | awk '/^Index/ {print $NF}'

두 리비전 비교

# svn diff -r 100:101

두 리비전의 파일비교

#svn diff -r 100:101 file_path

자세한 명령어는 svn -h or svn 명령어 -h


출처 - http://www.whitesal.gtz.kr/article/article_view.php?no=3111&page=15&category_no=2