일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- not to accept jdbcUrl
- spring boot
- spring
- remove
- install maven
- Java
- pkgutil
- ubuntu
- mariadb
- svn backup
- duplicate lines
- change file content
- JAR
- docker
- object
- local
- javaascript
- JavaScript
- 줄복사
- ADB
- Jenkins
- gradle
- driverspy
- jdbc
- ^M바꾸기
- install
- 전송포맷
- Change port
- key bindings
- maven
- Today
- Total
Simplify
svnsync를 이용한 svn repository 백업방법 How to backup svn repository using 'svnsync' 본문
svnsync를 이용한 svn repository 백업방법 How to backup svn repository using 'svnsync'
Simplify - Jonghun 2019. 12. 30. 14:49svn 자체가 형상관리, 그리고 공동 작업을 위해서 소스코드를 서버에 보관 한다는 의미도 있는데, 이걸 사용하면서 어쩔 수 없는 사정으로 백업을 해야하는 상황이 생깁니다. 개인적으로 느끼기에는 git 에 비해 덜 안정적이다 라는 느낌이 있어서인지, svn을 제대로 사용하지 못하는 상황이거나, 구성원들 중 잘못된 명령을 실행한 경우, 혹은 svn 작업을 하는 도중에 네트워크 등에 문제가 발생하는 것 등은 repository 에 심각한, 복구 불가능한 문제가 발생하기도 합니다.
이유야 어찌 되었든, svn 은 주기적으로 백업 관리해주는 것이 좋다고 판단되며, 특히 업무적으로 이를 이용하는 경우에는 하루 한 번 정도 백업하여 만일의 경우에 대비하는 것이 좋습니다.
svn 을 백업 관리하는 방법에 대해서 찾아보면 다음의 세 가지 방법 정도가 검색되는데, 여기서는 그 중에서 svnsync 에 대해서만 다루고자 한다. 그 이외의 방법은 여기서는 다루지 않고, 앞으로도 필자는 사용하지 않을 생각입니다.
svnadmin dump
로컬 repository 에 대해서만 백업이 가능하다는 단점이 있지만, 특정 revision 구간을 지정하여 백업할 수 있다는 장점이 있습니다. 만약 해당 구간을 잘못 지정하여 백업하는 경우, 다시 load 할 때에 오류가 발생하거나, 백업 과정에서도 정상적으로 백업이 되지 않을 수 있다는 점을 주의해야 합니다.
svnadmin hotcopy
그야말로 repository 를 통째로 복사하는 기능을 합니다. 특정 폴더에 백업하거나 smb 폴더 등이 mount 되어 있는 경우에 유용하다고 합니다.
svnsync
특정 repository 를 주소로 하여 그대로 백업하기 때문에 완벽하게 동일한 형태로 백업이 가능합니다. (revision graph 유지) 따라서 이 방법을 사용하고 백업한 폴더를 그대로 svnserve 로 respository 로 서비스하면 동일한 하나의 repository 를 구성할 수 있습니다. 만일의 사태에 대비한 백업 svn 을 구성할 때에 유용하며, svn url을 기반으로 하기 때문에 원격지에 대한 백업도 가능합니다. 또한 로컬에 대한 것 역시 localhost 접속으로 구성할 수 있습니다. (이 부분은 작업해 보지 않았으나 되지 않을 이유가 없어 보입니다)
환경(상황)
svn 사용 환경은 다음과 같이 가정합니다. 192.168.0.10 이 현재 운영중인 svn 서버이고 192.168.0.20에서 svnsync 로 백업을 수행하고 여기서 백업 svn 을 운영하는 것으로 생각하면 됩니다.
svn server | 192.168.0.10 |
backup server | 192.168.0.20 |
백업 사용하기
https://192.168.0.10/repos 저장소를 Backup Server(192.168.0.20)의 /var/backup/svnbackup/repos 에 백업합니다. 백업서버에서 다음 명령어를 수행합니다.
1. repository 생성
svnadmin create /var/backup/svnbackup/repos
2. pre-revprop-change 파일 수정
vi /var/backup/svnbackup/repos/hooks/pre-revprop-change
다음 내용을 추가하고 저장한다.
#!/bin/sh
exit 0;
Windows 의 경우 pre-revprop-change.bat 의 이름으로 다음 내용을 저장한다.
@ECHO OFF
exit 0
3. 실행 속성 부여
chmod +x /var/backup/svnbackup/repos/hooks/pre-revprop-change
4. svnsync 설정을 초기화 한다.
svnsync init file:///var/backup/svnbackup/repos https://192.168.0.10/repos
Windows의 경우 file URL 뒤에 Drive 명도 주어야 한다.
svnsync init file:///d:\svnbackup\repos https://192.168.0.10/repos
5. svnsync 구동
svnsync sync file:///var/backup/svnbackup/repos
위 과정을 거치고 나면 해당 repository 를 sync 하기 시작하고, 마지막 5번 과정만을 crontab 등에 등록하면, 정해진 주기마다 svnsync 를 수행합니다. 어렵지 않은 명령어들이지만, 해당 과정을 (혹시 중간에 원치 않은 진행이 되더라도..) 몇 번 반복하다 보면 어떤 동작을 갖는지 감이 옵니다.
개인적으로는 svn보다는 git 을 선호하는지라..^^ 업무적으로만 사용해봤으니 사용해보시고 잘 안되거나 하는 것들은 comment 남겨주시면 같이 해결해 보면 좋을 것 같습니다.
출처/참고자료
'Other > Dev. Tips' 카테고리의 다른 글
오라클 URL 에 대해.. - About Oracle Driver URL (0) | 2020.02.24 |
---|---|
jqGrid 에서 셀 속성 변경하기 - How to change cell attribute with jqGrid (0) | 2020.02.23 |
오라클 DB에서 관리자 계정 삭제하기 how to drop administrative user in oracle 12c (0) | 2019.12.24 |
FileZilla 에서 전송한 파일의 포멧 문제 해결방법 How to fix fire-formatting issue in FileZilla (0) | 2019.12.24 |
블로그에 키보드 효과, 강조문구 설명 효과 추가하기 How to add keyboard effect in blog post (0) | 2019.12.24 |