# 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

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
rsync --exclude 패턴

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다