개발 이야기/Java

Redmine 백업하기 - cwRsyn을 이용한 원격백업

시반 2010. 3. 5. 11:53

Redmine 백업하기 – rsync를 이용한 원격백업.

 

얼마전 팀에서 운영하던 이슈추적시스템 중 하나인 Redmine을 다른 서버로 이전하게 되었다.

사실 이전작업이라고 해봤자 첨부파일을 복사하고 백업했던 DB를 복구하기만 하면 되는 것이긴 했지만...

리눅스서버라면 대상소스를 압축하고 ftp로 파일을 옮기고 복구하는 작업을 rsnc를 이용하면 아주 간단하게 처리될 수 있지만

팀내 서버로 윈도우즈 서버를 사용하는 터라 처음엔 그냥 압축한 다음 ftp로 이용하려고 생각했었는데

cwRsyn이라는 윈도우즈용 rsyn도 있다기에 이를 한번 사용해보기로 했다(맥용도 있다는데...쓸일이 없다... -_-).

 

먼저  cwRsyn을 다운로드 받아 설치해보자. 다운로드는 http://sourceforge.net/projects/sereds/files/  에서 받으면 된다.

현재 4.0.3 버젼이 최신버젼이네요...

 

1. cwRsynServer설치하기

 

백업소스가 있는 곳에 cwRsynServer를 설치해야 합니다. 여기서는 윈도우즈용 Redmine이 있던 서버에 설치하는 것으로 진행해보겠습니다.

 

설치시 언제나 나타나는 라이선스 동의.....I Agree 를 클릭..

 

다음엔 설치폴더를 지정합니다. 기본값이 cwRsyn 정도가 되지 않을까 싶었는데 ICW가 기본값이네요...

 

서비스 계정을 등록하는 부분입니다. 리눅스용과는 달리 cwRsynServer는 하나의 서비스 계정만을 제공하는 듯 합니다.

리눅스용처럼 auth_users 등을 설정하여 인증요청시 사용되는 것 같습니다.

기본값으로 계정은 SvcCWRYNC, 패스워드는 7ElpiAHCxi2780 이 지정되지만 

기본값대신 SyncService라는 계정으로 만들어 보았습니다.

 

이제 Install 버튼을 클릭하여 설치를 진행합니다. 끝나면 Close버튼을 클릭하여 설치를 종료합니다.

 

2. 백업소스 설정하기

 

설치가 끝났다면 설정파일(C:\Program Files\ICW\rsynd.conf)을 열어 백업 소스정보를 추가합니다.

 

[redmine_files]

path = /cygdrive/C/redmine/apps/redmine/files

read only = false

transfer logging = yes

  • [redmine_files] : [ ] 안의 이름으로 클라이언트에서 접근합니다. 한마디로 서비스명?
  • path :  실제 백업소스 경로를 지정합니다. 명명규칙에 따르면 c:\work의 경우 /cygdrive/c/work 로 표시합니다.
  • read only = false : 클라이언트에서 업로드를 허용한다는 의미입니다. false로 설정하는 경우 업로드를 위해 Prepare a Directory for Uploading ( 설치폴더/Bin/PreUploadDir.exe )를 설치해야 겠지만 이번엔 이전 작업을 위한 다운로드만을 할 뿐이라 패스...

3. 서비스 구동

 

rsynServer 는 설치를 하게 되면 자동으로 서비스로 등록은 되지만 시작유형이 수동으로 설정되어 있기 때문에 서비스에서 직접 시작을 해주어야 합니다. 주기적으로 백업을 수행하도록 설정한다면야 속성값에서 자동으로 변경해도 상관없을 듯...

 

4. 클라이언트 설치하기

 

이제 백업하고자 하는 곳에 클라이언트를 설치합니다.

여기서는 원격백업을 위해 다른 서버에 설치를 진행하지만 하나의 서버에 설치할 수도 있습니다. (로컬 백업...)

 

마찬가지로 라이선스에 동의....

 

설치할 컴포넌트를 선택합니다. 선택사양이라 해봤자 Secure Channel Wrapper 뿐이네요.

 SSH를 지원하기 위한 컴포넌트인 듯 보입니다.

 

클라이언트 설치폴더가 cwRsync 였네요. Install 버튼을 클릭한 다음  설치를 종료합니다.

 

5. 클라이언트에서 백업 설정하기

 

설치디렉토리의 cwrsync.cmd 라는 파일을 메모장등으로 열어 다음과 같은 형식으로 백업 정보를 저장합니다.

rsync [옵션] [백업소스주소::백업서비스명] [클라이언트 백업 경로]

예) rsync.exe -avzr 127.0.0.1::redmine_files /cygdrive/c/redmine/apps/redmine/files

     --> 백업소스의 모든 파일(하위 디렉토리 포함)을 압축전송을 하여 c:\redmine\apps\redmine\files 디렉토리에 백업하라

저장 후 cwrsync.cmd를 실행하면 다음과 같이 백업소스를 백업하는 것을 확인할 수 있습니다.

 

참고로 옵션은 다음과 같습니다.

 

옵션

설명

-a

아카이브 모드, 심볼릭링크, 속성,퍼미션,소유권  보존

-v

상세보기

-z

전송시 압축

-r

하위 디렉토리 포함

-l

심볼릭 링크 재생성

-p

퍼미션 업데이트

-t

변경시간 보존, 없는 경우 전송시간으로 변경

-g

그룹속성 보존

-u

추가된 파일만 전송

-b

낡은 파일일 경우 ~을 붙임

-- delete

원본서버에 없는 파일은 클라이언트에서도 삭제

--existing

추가된 파일은 제외하고 갱신된 파일만 전송

--exclude ‘PATTERN’

패턴과 맞는 패일을 제외하고 전송

--stats

결과 보고

 

마치며...

 

 http://www.rsync.net 의 튜토리얼을 살펴보면 윈도우즈용 백업 에이전트를 사용하여 파일 시스템 뿐만 아니라  SVN, Git 등의 repository에서부터 MySQL, Postgress 등의 DB백업까지 스케쥴러에 따라 다양한 백업을 하는 방법들을 소개하고 있습니다.  

사실 윈도우즈 서버에서 rsync를 이전작업을 위해 사용해 본것이라 이러한 기능들을 시도해보지는 못하고 첨부파일디렉토리만을 대상으로 해보았지만 차후 백업정책에 따라  충분히 시도해 보아도 될 것 같다는 생각도 드네요.

내용은 별로 없지만 Redmine의 DB (MySQL) 백업 부분은 다음 블로그에 올려야 될거 같습니다.