rsync 사용법 문의

dotlee   
   조회 8581   추천 0    

마이크로 서버를 한대 사다가 차근차근 제게 맞게 셋팅해 가고 있는 중입니다.

셋팅 중 막힐 때 마다 여기에서 도움을 많이 받아왔었는데요
1. 3개의 HDD로 raid5가 구성되지 않던 문제
    => BIOS가 아닌 윈도우용 관리툴 상에서 구성 가능
2. IPMI 사용 관련 문제
    => BIOS상에서 내장그래픽 동장 모드를 항상 사용에서 자동선택으로 변경
3. 파티션 인식 문제
    => testdisk 유틸을 사용하여 복구 
4. NAS간 대용량 데이터 복사
    => smbclient 명령어를 사용해 복사

4번에서 복사까지는 하였지만 자동 백업이 되지 않아 아쉬움이 많이 남습니다.
그래서 다시 제대로 rsync를 사용해 보려고 합니다.

1. 기본적인 사용법은 rsync options source destination 이라고 하는데
    이 명령어가 source쪽에서 실행이 되어야 하나요? destination쪽에서 사용이 되어야 하나요?
    그러니까 원본이 A, 목적지가 B라고 했을 때 A에서 B로 데이터를 넣어주는건가요?
    아니면 B에서 A의 데이터를 가지고 오는건가요?
2. source와 destination은 yundream@192.168.56.101:/home/yundream/backups 저런 식으로 계정과 경로를 적어주던데
     해당 디렉토리와 계정에 별도의 공유설정을 해 줘야하는건가요?
3. rsync 데몬은 양쪽에서 모두 돌아가고 있어야 하나요? 한쪽만 돌아가고 있어도 되나요??
4. 해당포트만 열어주면 로컬네트웍이 아닌 원격지의 저장소로도 데이터 백업이 가능한가요?

리눅스에 대한 기초도 부족한 상태에서 이것 저것 해 보려니 막히는게 많네요
많은 조언 부탁드립니다.

짧은글 일수록 신중하게.
백두성 2014-11
1. rsync 서비스 구동 주체로 판단하면 될 듯 합니다.
  저 같은 경우 마이크로 서버에 rsync 서비스(FreeNAS)를 구동하고,
  다른 Linux 컴에서 rsync 스크립트를 돌려 백업 폴더를 동기화 하고 있습니다.

2. ssh로 접근하도록 하면, 두컴 계정의 인증서를 일치시키 로그인을 비켜 갈 수 있습니다.

다음은 cron에 걸린 스크립트 예입니다. 10.x.x.13이 rsync 서비스 구동중인 마이크로 서버입니다.
물론 크론 실행의 주체는 destination 폴더가 존재하는 rsync client입니다.
(기본 옵션으로는 rsync 속도가 무척 느립니다. 구글링을 통해 아래와 같은 옵션으로 대충 튜닝했습니다.)

#!/bin/bash
rsync -aHXxv --numeric-ids -e "ssh -T -c arcfour -o Compression=no -x" 10.x.x.13:/mnt/source /opt/raid/destnation/
FOXBI 2014-11
1. 딱히 구애 받지 안습니다.  기본 형식처럼 원본 사본 순서이면 됩니다.
  A 에서 수행하면 A에서 B로 넣어주는 개념이고
  B에서 수행하며 A에서 B로 땡겨오는 개념이 되겠습니다.

2. 여기 써놓은 형식은 ssh 프로토콜을 이용하는 방식입니다. 별도의 rsync 구성을 안해도 되서
    편리하죠. ssh 프로토콜로 인증받기때문에 해당 계정에 대한 권한이 있으면 되겠습니다.
    /home/yundream 아래 쪽 권한에
    192.168.56.101 서버가 원본일(A) 경우는 read 권한만 있으면 되고(B에서 수행)
    192.168.56.101 서버가 사본일(B) 경우는 write 권한도 있어야 합니다(A에서 수행)

3. ssh 프로토콜 이용할경우 데몬기동 필요 없습니다.

4. 역시 ssh 프로토콜이용하면 별도의 포트 오픈이 필요 없습니다.

예제입니다.

원본서버 /home/abc 경로를 사본서버 /home/def 경로로 동기화 할경우 아래와 같이 수행방법이 있습니다.

1. 원본서버에서 수행
Case1. abc아래 파일을 def 아래로 동기화
# rsync avz /home/abc/* -e ssh def@10.10.10.10:/home/def/
Case2. abc를 def 아래로 동기화
# rsync avz /home/abc -e ssh def@10.10.10.10:/home/def/

2. 사본서버에서 수행
Case1. abc아래 파일을 def 아래로 동기화
# rsync avz -e ssh abc@10.10.10.10:/home/abc/* /home/def/
Case2. abc를 def 아래로 동기화
# rsync avz -e ssh abc@10.10.10.10:/home/abc /home/def/

주의하실점

rsync 는 특성상 경로 표기에 주의를 하셔야 합니다.

/ 의 유무에 따라 경로가 바뀌게 되는 경우가 종종있습니다.

또한 최초 1회이후 변화된 내용 증분등에 대한 동기화를 위해서는 --delete 옵션이 추가 되야합니다.

신규파일은 기본옵션에서도 동기화가 되나 동일 파일내의 내용 변화등은 옵션이 더 필요합니다.

또한 --delete 옵션을 넣으면서 부터는 원본과 사본의 구분 경로 구분을 잘 확인하고 수행하셔야 합니다.

자칫 원본 지우는 케이스가 많습니다~

이런점만 주의 하시면 디스크 이관이나 백업등에 다양하게 활용 하실 수가 있습니다~~~
공돌이 2014-11
1.
소켓만 연결되면 어느쪽으로든 데이터는 움직일수있습니다.
해서 데이터 방향보다 rsync 서버와 rsync 클라이언트로 생각하시는게 혼돈이 없을것같습니다.
rsync는 ssh접근도 지원해서 rsync서버데몬 없이도 원격지로 접근도 가능합니다.
rsync -avz 192.168.30.99::server1/ /backup/server1
위 명령어는 원격지 rsync서버 디렉토리로 접근해서 로컬로 동기화하는 명령입니다.

2.
앞에 ssh 옵션을 붙여서 특정 계정으로 접근하면 해당계정의 권한을 가지고
rsync서버데몬으로 접근하면 rsyncd.conf 에 기술된 디렉토리로 접근합니다.

3.
서버쪽만 청취데몬이 필요하고 클라이언트는 rsync 라이브러리만 설치되어 있으면 됩니다.
ssh로 접근하면 이마져도 필요없습니다.

4.
네트웍레벨에서 접근이 가능하다면 lan이든 wan이든 가능합니다.
블랙커피 2014-11
1.
어느쪽에서 실행되어도 상관없습니다.
가령 소스에서 대상으로 밀어놓고 싶으면 소스에서 스크립트를 실행하면 되고요.

rsync -avzhi -P -e "ssh -p2222 -u user" ~/work dest-server:~/work

이런식입니다. 반대로 대상서버에서 소스쪽 데이터를 땡길려면 위와 반대로 실행하면 됩니다.

rsync -avzhi -P -e "ssh -p2222 -u user" source-server:~/work/ ~/work

서버상황에 따라 정하시며 되고 만약 파일변경에 따른 실시간 동기화를 원하시면 소스에서 실행되어야 겠죠.


2.
연결 방법에 따라 다른데 ssh쉘로 접속 하실려면 대상서버의 계정을 지정하면 됩니다.
대상 서버에는 useradd로 사용자가 등록되어 있어야 하구요.
-e 옵션으로 ssh를 명시하시고 ssh 연결 옵션을 지정하는 방식입니다.

-e "ssh -p <port> -u <userid> -i <비밀키>" dest-server:<path>

또는

-e "ssh -p <port> -i <비밀키>" userid@dest-server:<path>

대상버서에 rsync를 대몬으로 띄웠다면 사용자 지정없이 /etc/rsync.conf 에서 특정 디렉토리 지정이 가능합니다.
이때는 rsync 파라메터에 -e 옵션없이 대상서버의 모듈명을 지정하시면 됩니다.

rsync -avzhi -P ~/work dest-server::mybackup


3.
대상서버에서 돌면 됩니다.


4.
원격지 백업을 목적으로 나온게 rsync입니다. 당연히 됩니다.


다른 얘기지만..
로컬의 keychain과 함께 대상서버의 sshd_config에서 공개키 인증으로 사용하시면 보안도 강화되고 더 편리하게 사용할 수 있습니다.
NGC 2014-11
네트웍속도가 빠르다면 -z 옵션은 빼시는게 속도가 더 나은경우가 많습니다.
dotlee 2014-11
답변 주신 백두성님, FOXBI님, 공돌이님, 블랙커피님, NGC님 모두 감사합니다.
기본이 약하다 보니 적어주신 답변을 이해하는데도 한참이 걸리네요. (그래도 아직 정확히 이해는... ㅠ.ㅠ)
알려주신 내용으로 좀 더 공부를 하고 와야겠습니다.
감사합니다.


QnA
제목Page 3034/5731
2014-05   5268195   정은준1
2015-12   1793213   백메가
2014-11   4796   이지포토
2014-11   3656   comduck
2014-11   4145   윈도우10
2014-11   8582   dotlee
2014-11   8704  
2014-11   4071   wons
2014-11   4834   박문형
2014-11   7409   블루스카이
2014-11   3710   VSPress
2014-11   4520   안과학
2014-11   5948   허진형ALpha
2014-11   3567   NGC
2014-11   4209   민가놈
2014-11   20233   코코짱
2014-11   4235   빠시온
2014-11   5221   라울
2014-11   3731   오펠
2014-11   3826   왕용필
2014-11   7165   2FluF
2014-11   5404   미수맨