· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Rsync For Windows

rsync 를 이용하여 윈도우즈 백업하기 Mini-HOWTO

김정수 pibonazi (at) hotmail.com

2003-12-17 ver 1.0.0

이 문서는 GPL(General Public License) 을 따릅니다.


1. 서문


살다보면 여러 컴퓨터에 자신의 디렉토리를 만들게 된다. 대부분의 네크워크 작업을 하는 리눅스 유저들이라면 그러할 것이다. 특히 윈도우즈도 사용하는 유저라면, 자신의 디렉토리를 압축해서 정기적으로 서버에 올리던지 또는 CD에 굽는 방법을 이용하여 백업을 할것이다. 그러나 매번 모든 자료를 압축하거나 전송하는 것은 효율적이지 못하며, 시간낭비이다. 따라서 변한 파일만 업데이트해주는 "동기화"의 개념을 가진 백업 프로그램이 필요한데, 가장 자주 사용하고 쓰기 편한 것이 rsync이다. 이 문서는 윈도우즈 클라이언트가 리눅스 서버에 백업하는 경우를 다루고 있으나, 리눅스 클라이언트에서 리눅스 서버에 백업하는 방법도 완전히 똑같다. 초보자들이나 혹은 rsync를 자세히 다룰 필요가 없는 사람들을 위해 최소한의 내용을 다룬 글이며 더 자세히 rsync에 대하여 알고 싶다면 http://samba.org/rsync 를 참조하면 좋을 것이다.

2. 클라이언트에 rsync 깔기


윈도우즈에서 rsync를 사용하려면 cygwin이 필요하다. [http]cygwin이 깔려있다면 Net 패키지 중에서 rsync만 더 설치하면 될 것이다. cygwin이 설치되어 있지 않다면 적당한 cygwin 미러사이트에 가서 default 정도로 인스톨하고, Net 패키지에서 rsync만 더 추가해 주면 된다. 어떤 미러를 고르느냐에 따라서 default의 크기가 결정되는데 예를 들어 ftp://http.gnupilgrims.org/pub/cygwin 의 미러는 말 그대로 최소설치이다(default+rsync+vim+nano가 까지 54.6M정도다).

일단 cygwin과 rsync를 모두 설치했다면, 윈도우즈 배치파일에서 unix명령이 실행되도록 환경을 만들어주자. 제어판 -> 시스템 -> 고급 -> 환경변수 에서 환경변수에 C:\cygwin\bin 을 더해주자.

윈도우즈의 명령 프롬프트에서 ls, grep 등등이 먹히는걸 확인해 본다.

3. 리눅스 서버의 세팅


백업본이 담길 리눅스 서버를 세팅하는 일이다. 일단 리눅스 서버에도 rsync를 깔아야 한다. 데비안이라면 루트 권한으로
$ apt-get install rsync
정도면 모든 일이 끝난다 :-). 이제 rsync가 데몬으로 실행되면서 어떻게 접속을 받아들일지 세팅을 하자. 일단 /etc/rsyncd.conf 란 파일을 만들어 주어야 한다. 다음과 같이 만들어주자.
[myconnectionname]

    path = /home/fibonacci/backup 
    comment = Fibonacci's notebook backup area 
    uid = fibonacci
    gid = users 
    read only = false 
    auth users = fibonacci 
    secrets file = /etc/rsyncd.secrets 
이 파일의 소유권을 root:root 로, 퍼미션을 644(rx-rr)로 바꾸어주자. 이는 severname이란 서버에 fibonacci란 사용자가 myconnectionname이란 이름의 접속을 하여 /home/fibonacci/backup 에 자료를 백업한다는 뜻이다. /etc/rsyncd.secrets 파일을 작성하자. 백업 접속 암호가 mybackup_amho라면
fibonacci:mybackup_amho
의 내용을 가지도록 만들어 주면 되겠다. 이 파일의 소유권을 root:root 로, 퍼미션을 600(rx-------)으로 바꾸어주자. 이제 rsync를 데몬 모드로 실행시키자
$ rsync --daemon

이제 클라이언트의 접속을 받아들일 준비는 다 했다.

4. 클라이언트에서 백업 스크립트 실행하기


이제 클라이언트에서 백업 스크립트를 실행해야겠다. 배치파일(.bat)에
rsync -vrtz --delete /cygdrive/c/내문서 fibonacci@servername::myconnectionname
란 실행문을 넣어주면 되겠다(C:\cygwin\bin 경로는 자동 인식하게 세팅하였다).

암호를 물어본다. 앞에서 /etc/rsyncd.secrets 의 내용에 적혀있던 암호를 넣어보자. 백업을 시작한다. 이제 /home/fibonacci/backup/내문서 디렉토리가 생성이 되고 c:\내문서 가 고스란히 복사되어 있는것을 알 수 있다.

5. 동기화 과정에 대한 설명

  1. rsync는 단방향 동기화 프로그램이다. 원본(SRC)의 내용을 목적지(DEST)에 옮겨놓는 것. 양방향 동기화는 unision 을 사용해야 한다.
  2. 동기화가 이뤄지는 조건은 옵션에 따라 다르지만 기본적으로는 다음과 같다
    1. 원본에는 있는데 목적지에 파일이 없거나
    2. 용량이 차이가 있는 경우
    3. 수정시간이 차이가 있는 경우
  3. 위 조건에 따라 원본 파일을 목적지에 옮겨놓는데, 목적지 파일이 원본파일보다 용량이 더 크거나, 수정시간이 최신이어도 원본파일로 바꿔놓는다!
    1. 따라서 원본과 목적지 양쪽을 동시에 수정하는 경우에 rsync를 사용하는 것은 적합하지 않다. 물론 순차적으로(예를 들어 집 컴퓨터 파일을 수정하고, 출근해서 집->직장으로 동기화 하는) 변경하는 경우엔 문제 없다.
    2. -u 옵션을 사용하면 원본 파일보다 목적지 파일이 최신인 경우 건드리지 않는다.
  4. rsync 2.6.8 버전 현재, 목적지 파일에 원본 파일을 덮어씌우는 경우 물어보는 옵션이 없는듯 하다. 사용에 신중을 기할 것.
    1. -n(--dry-run) 옵션을 넣고 실행하면 파일 전송을 하지 않고 어떤 파일이 변경될지 알려준다. 이 옵션으로 확인 후 실행하면 실수를 방지할 수 있다.

6. 파일명 인코딩

리눅스에서 윈도우로 파일을 가져올 때, 한글 파일명이 깨질 수 있다. 이 때는 인코딩 옵션을 줄 수 있다.
--iconv=utf-8,cp949
# --iconv=소스쪽 인코딩, 목적지 인코딩



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2012-03-22 03:11:04
Processing time 0.0213 sec