rsync를 이용한 소스 백업

1) 파일 백업
    rsync -av local_파일명 호스트주소::rsync모듈명


[줏음]==============================================

하나의 파티션을 그대로 다른 파티션으로 옮길 때 tar나 cpio를 많이 사용한다.

여기서는 rsync를 이용하여 그대로 백업(? 복사)하는 방법하는 방법을 소개한다.



1. 원격 시스템끼리 (서버 쪽에 rsync 데몬이 띄워져 있어야 함)



rsync는 주로 리모트 서버간의 파일 동기화할 때 사용하는 프로그램이다.

이해를 돕기위해 원격 시스템간 파일 동기화 예를 들어보자.



* 명령 : rsync [옵션] source디렉토리 dest디렉토리






# rsync -avz --progress htdocs/ test::homepage






-a : archive 모드로

-v : 더 자세하게 진행내용을 보여줌

-z : 압축해서 전송

--progress : 파일별 전송상황을 퍼센트로 보여줌



로컬의 htdocs/ 디렉토리 이하를 test 서버의 homepage이름으로 지정된 디렉토리로 그대로 복사한다.

test 서버에는 rsync 데몬이 동작중이어야 한다.



2. 같은 시스템에서 (rsync 데몬 필요 없음)



그러면 원래 하고자 했던 얘기인 같은 시스템에서 다른 파티션으로는 어떻게 할까?






# rsync -avxH --delete /home/ /BACKUP/home

building file list ... done   (파일이 많을 경우 목록 얻는데 시간이 걸림)

./

truefeel/doc/cisco Router장애처리.doc

... 중략 ...

truefeel/memo.txt

truefeel/music -> /mnt/wind/music/ (심볼릭 링크)

truefeel/memo-2003_09.txt => memo.txt (하드 링크)






-x : 해당 파일시스템의 것만. 이를 테면 /usr 과 /usr/local이 다른 파티션으로 존재할 때

     /usr 를 지정할 경우 /usr/local은 복사하지 않음

-H : Hard link까지 그대로 유지하면서 복사한다.

--delete : dest 디렉토리에 source 디렉토리와 다른 파일이 이미 있다면 삭제한다.



위 예는 /home/ 아래 파일시스템을 /BACKUP/home 디렉토리로 그대로 복사한다.

이미 /BACKUP/home에 다른 파일이 존재하면 그건 삭제하여 완전히 동일하게 만든다.



주의할 것은

1) 압축하도록 하는 -z 옵션은

   동일시스템에서 복사할 때는 오히려 속도가 떨어지므로 사용하지 않는다.

2) SRC부분에 지정하는 /home/ 와 /home는 분명 다르다.

   /home/ 일 때 -> /home/truefeel 은 /BACKUP/home/truefeel 로 백업

   /home  일 때 -> /home/truefeel 은 /BACKUP/home/home/truefeel 로 백업



cron에 매일 새벽 4시 30분에 sync하도록 해보자.






# crontab -e

30 4 * * * /usr/bin/rsync -avxH --delete /home/ /BACKUP/home > /dev/null 2>&1






4. 특정 파일이나 디렉토리를 제외하는 방법은 없을까?



rsync에서는 --exclude=패턴--exclude-from=패턴파일명 옵션으로 제외할 파일을 지정할 수 있다.

아래의 패턴 파일을 보자.






; 파일명 : backup.rsync_exclude

;

; 필요없는 웹브라우저 캐시 파일과 유즈넷 캐시 파일 제외

**/Cache/**

*/.pan/*/cache/*

; 작업 파일 제외

*/temp/*

*/work/*

**.o






';'나 '#'로 시작하는 줄은 주석이다.

* (* 하나)는 일반적으로 알고 있는 모든 문자열로 생각하면 된다.

** (* 두 개)는 * 보다 강력한 확장 패턴으로 / 까지 포함된 모든 문자열이다.

위 예에서 **/Cache/** 는 a/Cache/b/ 디렉토리, a/b/Cache/c/d/e/ 디렉토리 등이 모두 해당된다.

그러나 .pan/*/cache/* 는 .pan/a/cache/ 디렉토리는 해당되지만 .pan/a/b/cache/ 디렉토리는

해당되지 않는다.

그러면 work/* 과 work/ 는 어떤 차이가 있을까?

work/* 패턴은 work/ 이하의 파일이나 디렉토리는 복사하지는 않지만 DEST 영역에 work/ 디렉토리

는 생성을 한다. work/ 패턴은 디렉토리 조차도 생성하지 않는다.



--exclue-from= 옵션만 붙이고 실행하면 된다.




# rsync -avxH --delete --exclude-from=backup.rsync_exclude /home/ /BACKUP/home






powered by performancing firefox




'리눅스' 카테고리의 다른 글

이쁜 터미널 YakuaKe  (0) 2006.08.12
grep 검색시 검색어 색깔로 표현하기  (0) 2006.07.19
ubuntu에 xgl설치하기  (0) 2006.06.26
로지텍 mx510 버튼 사용하기(2)  (0) 2006.06.24
로지텍 mx510 버튼 사용하기  (0) 2006.06.24