[Linux] Rsync 란? 알기쉽게 설명하는 Rsync

 Linux Rsync 

알기쉽게 설명하는 Rsync

 

  • 동시에 많은 서버 환경에서 작업을 하다 보면 rsync를 많이 접하게 됩니다.
  • 뭔가를 맞춰주는것 같은 느낌은 받는데 정확히 몰랐던 개념. 함께 알아보도록 합시다.

Rsync란?

 

  • Rsync(Remote synchronization) 의 약자로 직역하자면 원격 동기화 라는 뜻.
  • 원격으로 file(.html .php .jsp 등)과 디렉토리(/data , /etc 등)를 복사하고 동기화 하기위해 사용하는 툴.
  • 쉽게 말해 A서버에서 B,C,D,E 등 다수의 서버로 사용자가 원하는 특정 디렉토리 및 파일을 쉽게 동기화해주는 것.

 

Rsync의 장점

 

  • 원격지 서버의 패스워드를 일일이 기억하지 않아도 파일 및 디렉토리의 카피가 가능하다.
  • 파일을 효율적으로 복사하고 동기화 할 수 있다.
  • 파일 및 디렉토리의 소유자와 그룹권한 (Permissions) 등 파일의 부가정보까지 복사가 가능하다.
  • SCP(Secure Copy) 보다 속도가 빠르다.
    • SPC란?
    • Rsync와 하는일이 비슷함.
    • SSH프로토콜을 통한 파일 전송 방식이다.

 

왜 Scp를 사용하지 않고 Rsync를 사용하는가.

 

  • 우선 scp는 symbolick Link(다른폴더를 참조하는)가 걸려있는 폴더를 참조를 유지하지 않고 원본 파일을 저장한다.
  • spc는 해당되는 폴더 및 파일 하위까지 a to z를 전송한다면
  • rsync는 처음에는 spc와 똑같지만 그 이후부터 변화된 파일 및 디렉토리만 전송하여 spc보다 빠르기 때문.

 

Rsync 설치하기 (CentOS ver)

 

  • centos가 아니라면 yum 패키지가 아닌 apt-get이나 기타 등 맞는 설치패키지 사용
  • 1. 명령어로 rsync 패키지 설치 유무 확인하기
  • 2. rsync 설치가 되어있지 않다면 rsync 설치하기
  • 3. 루트디렉토리(/) 밑에 etc 폴더 밑에 rsyncd.conf 설정파일 작성하기
  • 4. xinetd 및 rsyncd.service 재시작 하기 (rsyncd.service는 centos7버전 이상부터)
// 1.rsync 설치 확인하기
$ rpm -qa | grep rsync
rsync-3.1.2-6.el7_6.1.x86_64
//2. rsync 없을 시 설치해주기
$ yum -y install rsync

//3.rsync 설정파일 작성하기
$ vi /etc/rsyncd.conf

///etc/rsyncd.conf
[alias 이름]
path = /mingye/www
uid = mingyu
gid = mingyu
use chroot = yes
read only = false
hosts allow = 192.168.0.1 192.168.0.2 192.168.0.3 

# path : 서비스 대상 디렉토리 위치
# uid : 사용자의 id 
# gid : 사용자의 그룹 id 
# use chroot : 위의 path를 루트 디렉토리로 사용(yes)
# read only : 읽기 전용(클라이언트 -> 서버인 경우는 no로 설정)
# hosts allow : 
#   호스트별 접속 허용 설정 / 기본값은 all host / IP를 다수로 적을 때 스페이스'공백'으로 연결

# comment : 해당 설정에 대한 설명, 코멘트
# max connections : 동시 접속자 수
# timeout : 타임아웃 시간 설정 

//4. xinetd 및 rsyncd.service 재시작
$ /etc/init.d/xinetd restart
$ systemctl start rsyncd.service

 

 

Rsync 실행하기

 

  • 1. rsync는 873 포트를 사용함으로 미리 서버에 873포트를 확인 및 허용해준다.
    • 포트 확인은 netstat 명령어 (송부 받을 rsync서버) 및 telnet 명령어 (송부 할 rsync 서버)
    • 포트 열기는  iptables 명령어
  • 2. rsync -avz 명령어로 rsync 실행하기
//1-1.natstat으로 접속된 서버에 873포트 열린거 확인
$ netstat -nap | grep 873

//1-2. telnet으로 rsync할 상대서버 873포트 열린거 확인
$ telnet 192.168.0.1 873

//1-3. 안열려 있을 시 iptables로 873 포트 열기
/**
iptables 속성 :
I : 새로운 규칙을 추가한다.
p : 패킷의 프로토콜을 명시한다.
j : 규칙에 해당되는 패킷을 처리하는 방법을 정한다.
*/
$ iptables -I INPUT 1 -p tcp --dport 873 -j ACCEPT

//2.rsync -avz 명령어로 rsync 실행하기
/*
현재 서버 /data/test/mingyu 하위 폴더 및 파일을 전부
192.168.100.1 서버의 /data/test/mingyu 폴더로 rsync해라 뜻
*/
$ rsync -avz /data/test/mingyu 192.168.100.1::data/test/mingyu

 

 

마무리

 

  • scp를 사용하기 보단 rsync를 사용하자.
  • rsync 사용 시 포트 확인 잘하자.
  • rsync 오류 시 /etc/rsyncd.conf 파일값을 확인하자.

 

관련글

 

 

내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)

오늘 하루도 즐거운 하루 보내세요!