시스템이야기2011. 3. 17. 18:57

rsync


rsync는 크게 2가지 용도를 생각해볼 수 있다.

1) 파일 백업 (퍼미션 유지 필요. 백업본으로 복구할 경우 퍼미션도 중요하다.)
2) 파일 배포 (반드시 퍼미션을 유지하지 안해도 될 상황이 있다.)

rsync를 이용해서 다수의 서버를 동기화한다고 하자. 그리고, 대상 서버는 웹서버들이다. (즉, '파일 배포' 용도) 이 웹페이지 파일은 웹에서 읽을 수 있는 권한만 갖으면 된다. 쓰기 권한을 갖을 필요가 없다. (업로드가 이뤄지는 디렉토리는 쓰기 권한이 필요하겠지만)

rsync는 원본 파일(또는 디렉토리) 퍼미션과 상관없이, 싱크할 때 특정한 퍼미션으로 고정시키는 옵션이 있다. 디렉토리는 555(dr-xr-xr-x) 또는 515(dr-x--xr-x)으로, 파일은 444(-r--r--r--)로 고정해볼 수 있을 것이다. 서비스 서버(대상 서버)의 파일은 보안에 조금 더 안전하게 존재하게 된다.

(예)
-------------    ---------------
 원본 서버          대상 서버
192.168.1.123    192.168.1.110~120
-------------    ---------------
drwxr-xr-x    ->   dr-xr-xr-x
drwxrwxr-x    ->   dr-xr-xr-x
-rw-r--r--    ->   -r--r--r--
-rw-rw-rw-    ->   -r--r--r--
-------------    ---------------

대상 서버의 rsyncd.conf 예이다.

# server : 192.168.1.110
#
uid             = root
gid             = root
user chroot     = yes
max connections    = 10
hosts allow    = 192.168.1.123

[coffeenix]
path        = /home/coffeenix/public_html
read only    = no
incoming chmod  = Du=rx,Dgo=rx,Fugo=r

'incoming chmod =' 파라미터는 들어오는 파일을 특정 퍼미션으로 고정한다.
파라미터의 값은 각각 다음과 같은 의미를 갖는다.

- D : 디렉토리
- F : 파일
- ugo : 각각 user(u), group(g), other(o)에 해당한다.


[ 기본적인 파일 보호 장치인 chmod (열쇠찾아서 그리는데 쉽지 않았다. ^^) ]


위의 Du=rx,Dgo=rx,Fugo=r 는 Dugo=rx,Fugo=r처럼 통합해서 표시해도 좋다.
Du=rx는 디렉토리 소유자는 r-x(읽기, 쓰기)로 설정한다는 의미이다.
Fugo=r은 누구나(user, group, other) 파일을 읽을 수 있도록(r--)로 설정한다.
위 설정대로하면 디렉토리는 r-xr-xr-x 가 되고, 파일은 r--r--r--가 된다.

# rsync -avz --delete public_html/ 192.168.1.110::coffeenix/

보다 자세한 글은 커피닉스에 써뒀으니 살펴보시길.

Posted by 좋은진호