linux

Total 136
Today 0
profile_image
ino
04-11-30 16:38 0개 2,718회
rsync
출처 : http://linux-sarang.net/board/?p=read&table=tip&no=10781&page=



★rsync 를 이용한 HDD 미러링(백업)



rsync 를 이용한 HDD 미러링

======================================



rsync를 사용하는 것의 좋은 점은 변경된 파일들만을 복사한다는

것이다. 만약 주어진 파일시스템이 하루가 지나도록 변경되지

않는다면 보통의 copy나 tar 명령을 사용하는 것보다 수천 배는

빠를 수 있다.



홈페이지 : http://rsync.samba.org/rsync/index.html

다운로드 : ftp://ftp.kreonet.net/pub/Linux/RedHat/redhat/linux/7.3/en/os/i386/RedHat/RPMS/rsync-2.5.4-2.i386.rpm



0) 프로그램 설치 및 서비스 오픈

=======================================

#> rpm -qa | grep rsync

rsync-2.3.1-2



#>vi etc/services 에 다음 내용확인 및 추가

rsync 873/tcp # rsync





1) 서버 설정파일

====================



[root@www /root]# vi /etc/rsyncd.conf



[www]

path=/var/www/html

comment=webserver1

uid=nobody

gid=nobody

use chroot=yes

read only=yes

hosts allow=211.234.xxx.xxx

max connections=3

timeout 100





2) rsync 명령어로 백업

============================



가. 증가백업(incremental backup)

#>rsync -auvrz /home /mnt/

-> 증가백업(incremental backup)을 할경우 수정된 파일이나,

신규 파일등이 보관되어집니다.



나. 미러백업(Mirror Backup)

#> mount /dev/hdc1 /mnt

#> rsync -avrz --delete /home /mnt



다. 옵션 설명

-a는 archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존).

-v verbose(상세하게 보여움).

-z compress(전송시 압축을 함

-r recursive(디렉토리까지 압축함)





3) cron을 이용한 자동 백업(미러링) 작업

==========================================

#> crontab -e

0 0 * * 0-5 rsync -auvrz /home /mnt > /var/log/home.incre

0 0 * * 6 rsync -avrz --delete /home /mnt > /var/log/home.mirror



설명: 일요일~금요일까지 증가백업(incremental backup)진행.

토요일에는 미러백업(Mirror backup)이 진행.







4) rsync 사용하기 (퍼옴)

==================



(접근 클라이언트를 www2.taejun.pe.kr이라고 가정함)



#>rsync -avz --delete www1.taejun.pe.kr::web /home/taejun/~public_html



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

-v 상세하게 보여움

-z 전송시 압축을 함.



--delete www1.taejun.pe.kr에서 web에 해당하는 내용(/home/www/htdocs)을

ww2.taejun.pe.kr 의 /home/taejun/~public_html 로 가져오면서 www1(서버)에는 없는

내용은 www2에서 삭제함. 만약 www2 차원에서 생성한 파일을 보관하려면 옵션 없앰.





#>rsync -avz foo:src/bar /data/tmp

다음 내용은 foo라는 호스트에서 src/bar 안의 내용을 지역호스트의 /data/tmp

디렉토리로 옮기는 것입니다.



여기서 알아두어야 할 것이 있습니다.

만약 위에서 src/bar/ 라고 하면 어떻게 달라질까요? bar 는 그 디렉토리 자체까지

포함해서 가져옵니다. 그렇지만 bar/ 라고 뒤에 디렉토리 표시를 하면 그

디렉토리안에 있는 내용만 가지고 옵니다. 상당히 결과가 달라질 수 있겠지요.



또한 : 과 ::의 차이는 무엇일까요? : 은 rsh나 ssh를 사용하는 것이며 :: 은 rsync

자체에서 지원하는 기능을 이용 자료를 가져오는 것으로 873 TCP 포트를 사용합니다.

상당히 헷갈리지요? : 에서 기본은 rsh를 이용하지만 -e ssh 옵션을 이용하여 ssh를

사용할 수 있습니다. ssh를 사용하려면 비밀번호를 입력해야하는데 이것도 파일형태로

만들어서 옵션에서 지정해주면 됩니다. 이에 대해서는 따로 설명하지는 않으며 man

page를 참고하세요.



-avz 등의 옵션이 있는데 이중 중요한 옵션만 설명을 하겠습니다.



-v verbose (자세하게 보여줌)

-a archive mode



-u update only(새로운 파일을 덮어쓰지 않음)

--delete 서버쪽에 없고 클라이언트쪽에만 있는 파일을 지움

-z compress (전송시 압축을 함)

--daemon 대몬 모드로 운영함 (이건 inetd.conf에 지정할 때 필요함)







-a 는 -rlptg 와 동일합니다.

-r recursive (하위 디렉토리까지 포함)

-l 심볼릭 링크 재생성

-p 퍼미션 업데이트

-t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜)

-g 그룹이름 변경



일반적으로 rsync는 길이와 time-stamp를 이용 파일을 비교합니다.



이제 쉘 스크립트를 만들고 cron에 등록을 하여 주기적으로 데이터를 동기화하면

됩니다.





5) 참고- 다음은 보안 설정을 추가하는 방법

#>rsync -av --delete -e ssh ~/public_html/ webserver:/home/rwa2/public_html/



이하여백.



--

invain

댓글목록

등록된 댓글이 없습니다.