rsync란
rsync란 서로 다른 두 컴퓨터에 들어 있는 정보를 서로 동기화 시킬때 사용한다. 동일한 소스가 두군데 존재하고 한쪽을 편집했을때, 다른 한쪽에 편집한 부분을 업데이트 시켜줘야한다. 이때 모든 소스를 옮기게 되면 시간적으로 많은 낭비가 있기 때문에 rsync는 수정된 부분만 비교해서 옮겨 주게 된다. 그리고 anonymous 서버로도 설정할 수 있는등 많은 유용한 기능들이 들어있다.
rsh이나 ssh을 이용하여 전송하기
이것은 원격지의 호스트에 계정이 있고 rsync의 서버 데몬이 설정되어 있지 않을 경우 사용한다. 간단히 로컬에서도 cp 대신 사용할 수도 있다. ssh를 이용하면 안전하게 복사할 수 있다. 아래의 방법대로 하면 간단히 원격지로 복사할 수 있다.
shell> rsync -arvu -e ssh /from/directory/ to.hostname.com:/to/direcotry
클라이언트에서 실행
shell> rsync -avz -e ssh 210.222.18.105:/backup /backup
여기서 디렉토리를 써 줄경우 마지막 부분의 /가 중요한 의미를 가진다. 마직막에 /가 있을 경우는 그 디렉토리 내의 모든 파일을 의미하고 /가 없을 경우는 그 디렉토리 자체를 말하는 것이다. -arvu는 아래 부분을 참조하기 바란다.
원격지 서버 설정하기
먼저 리눅스 최신본을 설치하면 기본적으로 rsync가 설치된다. 그러나 xinetd를 이용하여 서버로 설정은 되어 있지 않기 때문에 서버로 사용할 수 있도록 설정을 해 주어야 한다.
xinetd.d에 rsync파일 추가하기
/etc/xinetd.d디렉토리에 rsync라는 파일을 만들고, 아래와 같은 내용을 입력한뒤, 저장한다.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
/etc/services파일에도 아래와 갈은 내용이 없으면 추가해 주도록 한다.
rsync 873/tcp # rsync
rsync 873/udp # rsync
그리고 /etc/rc.d/init.d/디렉토리에서 xinetd를 restart 시켜준다.
shell> /etc/rc.d/init.d/xinetd restart
rsyncd.conf 파일 생성
/etc디렉토리에 rsync.conf라는 파일을 생성한다.
#motd = /etc/rsync.motd # file : message of the day
uid = nobody
gid = nobody
use chroot = no
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
[www.wangsy]
path = /somewhere/in/remote/host
comment = www.wangsy.com homepage
read only = false
uid = apache
gid = apache
auth users = wangsy
secrets file = /etc/rsyncd.secrets
위 파일과 함께 /etc디렉토리에 rsyncd.secrets파일도 함께 생성한다.
name:password
그리고 /etc/rsyncd.secrets파일의 permission을 rw-------로 해주는 것을 잊지 말도록 한다.
client에서 접근하기
서버 내용 내려받기
다음 명령을 통해서 서버의 내용을 다운 받을 수 있다.
shell> rsync -avz home.inzoo.co.kr::www.wangsy target_dir/
그리고 아래 명령을 통해서 로컬에서 수정된 파일을 서버에 반영할 수 있다.
shell> rsync -avz target_dir/ home.inzoo.co.kr::www.wangsy
위에서 -avz의 의미는 각각 다음과 같다. 자세한 사항은 rsync 홈페이지의 메뉴얼에서 확인할 수 있다.
-a, --archive archive mode
-v, --verbose increase verbosity
-z, --compress compress file data
-u, --update update only (don't overwrite newer files)
약간의 문제
client의 ip와 hostname이 lookup되지 않으면 remote호스트에서 접근을 허용하지 않는 문제가 있다. 이는 ADSL로 접속할 경우 연결이 되지 않게 되는 문제가 발생한다. 서버로 바로 접속하는 것 보다는 위 처음 방식인 ssh를 통한 접속 방법이 좀더 보안상 안전하기 때문에 이방법을 이용하는것이 좋을듯 하다.