본문으로 바로가기

rsync 사용하기

category 서버 & 시스템/Linux 2017. 10. 5. 01:52
반응형


1. rsync yum 설치 및 설정


1) yum 설치

os에 기본적으로 rsync가 설치되어있는 경우도 있지만 설치가 안되어있다면 설치 진행

# yum -y install rsync


# rpm -qa |grep rsync

rsync-3.0.6-12.el6.x86_64


# yum -y install xinetd


# rpm -qa |grep xinted

xinetd-2.3.14-40.el6.x86_64


2) 방화벽 설정

# vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

-A INPUT -p udp -m state --state NEW -m udp --dport 873 -j ACCEPT



# /etc/init.d/iptables restart 

# iptables -nL | grep 873
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:873 
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:873 


3) rsync 설정

# vi /etc/xinetd.d/rsync 

 disable = no \\ yes를 no로 변경



# vi /etc/rsyncd.conf 

[test] \\ 사용할 rsync 서비스 이름

path=/home/itsyou2 \\ 데이터 원본 경로
comment= this is rsync testing \\ 코멘트
uid=nobody \\ 권한사용자
gid-nobody \\ 권한 그룹
use chroot=yes \\ chroot 사용여부
read only=yes \\ 클라이언트에서 서버로 올리는 경우에는 no로 설정
hosts allow=115.68.221.178 \\ rsync클라이언트 ip설정, local이용시 입력할 필요없음
max connections=3 \\ 최대연결수
timeout=600

    

# rsync -v localhost::

test            this is rsync testing

test2           successss \\rsync 서비스 2개 만들어도 사용이 가능 (test1, test2)

# /etc/init.d/xinetd restart



* 오류발생

**오류**

# telnet localhost 873

Trying ::1...

telnet: connect to address ::1: Connection refused

Trying 127.0.0.1...

telnet: connect to address 127.0.0.1: Connection refused


# rsync -v localhost::

rsync: failed to connect to localhost: Connection refused (111)

rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]



**해결방법**
# netstat -nltp \\ 로 해당 데몬 올라와있는지 확인, 올라와있지 않는다면 아래 명령어 진행

# rsync --daemon

참고 url : http://rosagigantea.tistory.com/509




2. rsync source 설치 및 설정


1) source 설치

https://rsync.samba.org/ftp/rsync 에서 다운로드 가능

# cd /usr/local/src 

# wget https://rsync.samba.org/ftp/rsync/rsync-3.1.2.tar.gz 

# tar zxvf rsync-3.1.2.tar.gz 

# cd rsync-3.1.2 

# yum install -y gcc gcc-++ 

# ./configure --prefix=/usr/local/rsync \\ 설치 경로 

# make && make install 


# yum install -y perl \\ make 시 perl 과 관련된 에러가 출력된다면 perl 설치 후에 다시 진행


2) rsync 설정

컴파일시 prefix 옵션을 주지 않으면 기본적으로 /usr/local/bin/rsync 에 설치가 됨.

현재는 prefix=/usr/local/rsync 에 두었기 때문에 /usr/local/rsync 하위에 etc,log 디렉토리를 만들어줌. 


# mkdir /usr/local/rsync/{log,etc}  \\ rsync log인을 위한 설정을 진행

# echo “local3.info /usr/local/rsync/log/rsync.log” >> /etc/syslog.conf 

# touch /usr/local/rsync/log/rsync.log


rsync 구동시 사용할 설정 파일을 생성

# vi /usr/local/rsync/etc/rsyncd.conf


motd file = /usr/local/rsync/etc/motd \\ 테스트시 출력하는 파일//기본적으로 없는파일이며 만들필요 x

log file = /usr/local/rsync/log/rsyncd.log \\ log file 의 위치

pid file = /usr/local/rsync/etc/rsyncd.pid \\ pid 파일 위치

max connections = 0 \\ 동시접속자 수 (0=unlimited)

syslog facility = local3


[web] \\ 서비스명

path = /usr/local/apache/htdocs \\ 서비스할 디렉토리

comment = apache_web from 56.101 \\ 서비스에 대한 설명

uid = nobody \\ 파일전송하는 사용자의 id, 기본값 nobody

gid = nobody \\ 파일전송하는 사용자의 gid, 기본값 nobody

use chroot = yes \\ 디렉토리 위치를 root 디렉토리로 사용.(보안상 yes)

read only = yes \\ 읽기전용,(클라이언트에서 서버로 데이터를 올릴경우 yes)

hosts allow = 192.168.56.102 \\ 호스트별 접속허용 // hosts deny 도 가능

max connections = 3 \\ 동시 접속자수

timeout 600 \\ timeout 시간

 ※ auth user = 의 옵션을 통해 사용자 지정이 가능함(sshd allowusers 와 비슷)

 ※ secrets file = /usr/local/rsync/etc/rsyncd.secrets 파일에 허용유저:패스워드를 기입


[ftp]

comment = ftp_area from 56.101

path = /home/test01

read only = yes

list = yes \\ 클라이언트가 모듈들의 리스트를 요청했을시 출력허용

uid = nobody

gid = nobody


rsync path 설정 및 데몬을 구동

# vi ~/.bash_profile

 PATH=$PATH:/usr/local/rsync/bin/:


# source ~/.bash_profile


rsnyc 데몬을 구동시 사용할 rsyncd.conf 파일을 입력

# rsync --daemon --config=/usr/local/rsync/etc/rsyncd.conf

# netstat -nltp | grep rsync


다음의 명령어를 통해 rsyncd.conf 에서 설정한 서비스를 확인

# rsync -v localhost::




3. rsync 사용

1) rsyncd.conf 에서 설정한 서비스를 이용하지 않고 ssh 를 이용한 접근도 가능

다음과 같은 명령어를 통해 설정한 서비스명(디렉토리) 하위 데이타를 받을 수 있습니다. 

# rsync -avzPog [rsync설정한 서버]::[서비스명] [받을 경로]

# rsync -avzPog 115.68.222.110::ftp /usr/local/src


rsyncd.conf 에 서비스 등록시 read only = no 로 진행했다면 업로드도 가능

# rsync -avzPog [업로드할 파일] [업로드 받을 클라이언트 IP]::ftp [업로드할 경로] 

# rsync -avzPog /usr/local/src 115.68.221.178::ftp /usr/local/src



2) 원격지의 접속정보를 알고 있는 경우 ssh를 이용한 rsync 사용법

# rsync -avzPog -e ssh [가져올 서버의 IP]:[가져올 파일의 위치] [받을 경로]

# rsnyc -avzPog -e ssh 115.68.222.110:/usr/local/apache/htdocs /usr/local/src


# rsync -avzPog [업로드할 파일] [업로드 받을 계정@업로드 받을 아이피]:[업로드 받을 위치]

# rsync -avzPog /home/itsyou2/ itsyou@115.68.221.178:/home/itsyou

itsyou@115.68.221.178's password: 



4. rsync 옵션

-a : 아카이브 모드, 심볼릭 링크, 속성, 퍼미션, 소유권 등을 보존

-v : 진행상황을 자세히 보여줌

-q : -v 의 반대로 진행사항을 보여주지 않음

-R : 상대 경로를 사용

-b : 백업을 진행

-l : 심볼릭 링크를 보존

-H : 하드링크를 보존

-p : 퍼미션을 업데이트

-o : 소유속성을 보존(루트).

-g : 그룹속성을 보존

-t : 타임스탬프를 보존

-z : 파일을 압축(동일 시스템에서 복사할때는 오히려 속도가 떨어지므로 사용하지 않는것이 좋음)

-r : 하위 디렉토리까지 포함

-u : 업데이트된 파일만 전송(새로운 파일을 덮어쓰지 않음)

-c : 항상 파일을 체크

-e ssh(rsh) : ssh 를 사용

--existing : 추가된 파일은 전송하지않고 갱신된 파일만 전송

--delete : 서버에 없는 파일은 클라이언트에서도 삭제

--exclude '패턴' : 패턴과 맞는 파일만 전송

--stats : 전송 결과를 보고

반응형