# 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 |