개발etc

파일 동기화 - rsync

matt5659 2021. 10. 4. 14:39

rsync 란?

서로 다른 두 컴퓨터에 들어있는 정보를 동기화 시킬 때 사용하는 프로그램

  • Remote Sync의 약자
  • rsync는 컴퓨터 시스템 상에서 파일을 효율적으로 전송하고 동기화하기 위한 유틸리티
  • 파일의 타임스탬프와 크기를 검사하여 동작
  • 전송 시에 네트워크 대역폭을 최소화하는 delta encoding algorithm을 구현하여 rcp나 scp보다 훨씬 빠르고 효율적으로 site간의 데이터를 동기화한다.
  • rsync는 client와 server 프로그램이 모두 포함되어 있으며 server로 구동 시 tcp의 873 포트를 사용한다.
  • server 구동 시 SSH나 RSH 같은 Remote Shell protocol 기반에서 동작할 수도 있으므로 ssh 기반으로 rsync를 사용하면 방화벽을 오픈할 필요 없이 편리하게 사용할 수 있다.

rsync 설치 방법

rsync 방화벽 허용 (SSH 기반으로 사용 시 생략)

# iptables -A -INUPT -p -tcp --dport 873 -j ACCEPT

( rsync는 873 port를 사용 )

rsync 설치 확인 방법

[root@web ~]# rpm -qa | grep rsync
[root@web ~]# yum list installed | grep rsync

rsync 설치 방법

[root@web ~]# yum -y install rsync

xinetd 설치 방법

xinetd 설치 확인 방법

[root@web ~]# rpm -qa | grep xinetd
[root@web ~]# yum list installed | grep xinetd

xinetd 설치 방법

[root@web ~]# yum -y install xinetd

rsync 설정 방법

xinetd rsync 설정 파일 수정

[root@web ~]# vi /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
    disable = no
    flags = IPv6
    socket_type = stream
    wait = no user = root
    server = /usr/bin/rsync
    server_args = --daemon
    log_on_failure += USERID
}
  • 'disable=yes' 부분을 'disable=no'로 변경

rsync 설정 파일 작성

[root@web ~]# vi /etc/rsync.conf
[rsync_test]                                -> 사용할 rsync 서비스 이름
path = /usr/local/test                  -> 데이터원본 경로
comment = rsync_test                 -> 코멘트
uid = root                                -> 권한 사용자
gid = root                                -> 권한 그룹
use chroot = yes
read only = yes
hosts allow = 192.168.10.10         -> rsync 클라이언트IP, localhost일 경우 입력하지 않아도 된다
max connections = 10
timeout = 30

사용법

[root@web ~]# rsync [options] [source] [destination]

[options]

  • -a : archive mode(권한 및 속성 복사) (=-rlptgoD)
    • -r : 재귀적으로 하위 디렉토리까지 복사
    • -l : symbolic link 보존
    • -p : permission(권한) 보존
    • -t : timestamp(최종 수정일) 보존
    • -g : 그룹 보존
    • -o : 소유자 보존(root만 가능)
    • -D : devision, special 파일 보존
  • -v : 동기화 내역 상세 출력
  • -z : 데이터 압축
  • -h : human readable
  • -u : 덮어쓰기를 하지 않음
  • --exclude : 제외할 파일 확장자 설정
  • --delete : 동기화 시 서버에 파일이 없으면 클라이언트에서 파일 삭제
  • --progress : 진행 정도를 화면에 출력