1. rsync하는 대역폭의 제한, 그리고 --progress 옵션
네트웍이 허락하는 한도내에서 백업을 할 경우에 디스크 액세스가 많아져서 서비스에 지장을 초래할 수
있다면 대역폭 제한 옵션을 사용해보자.
위는 대역폭이 허용하는 한도내(11.05MB/s)에서 rsync가 이뤄졌다. --bwlimit= 의 단위는 KBPS 이며,
--progress 는 sync되는 진행상태를 보여준다.
2. 특정 시간 이후(또는 특정월)의 파일만 sync하는 방법
하나의 디렉토리에 년월일 구분없이 데이터가 계속 쌓이고 있다고 가정해보자.
그러나 백업을 할 때는
1) 최근 30일 동안 추가 및 변경된 파일만 sync되기를 원하거나
2) 2006년 5월 자료와 6월 자료를 별도 디렉토리로 sync되기를 원한다면
find 명령과 rsync의 --files-from= 옵션을 함께 사용하여 구현해볼 수 있다. --files-from= 옵션은
rsync 2.6.0 버전부터 추가되었으니 이전 버전을 사용하면 http://rsync.samba.org/ 에서 받아 업그레이드
하면 된다.
1) 최근 30일 자료만 모아서 dest/ 로 sync 할 때
2) 2006.6월 파일들(수정일 기준)만 특정 서버로 sync를 할 때
find 명령으로 목록을 얻은 후 -> 2006.6월 파일 목록만 grep으로 목록을 뽑아 -> rsync를 한다.
192.168.123.2 서버에는 rsync 데몬이 동작하고, rsyncd.conf에 [bak_dir] 이름의 설정이 있어야 한다.
위에서 사용한 find 의 -printf 옵션에 대해서는 find man 페이지나
http://coffeenix.net/board_view.php?bd_code=36 (유용한 find 명령어 예 모음, 글 좋은진호)을 참고한다.
이를 간단한 스크립트로 작성한 예이다. 년월지정없이 전날의 년월을 기준으로 sync를 한다.
3. 특정 파일 크기 이하 또는 이상의 파일은 제외하는 방법
--max-size=, --min-size= 옵션으로 특정 크기 이상의 파일은 제외(--max-size=)하거나 이하의 파일은 제외
(--min-size=)할 수 있다. --max-size= 는 rsync 2.6.4부터, --min-size= 는 2.6.7부터 추가된 옵션이다.
네트웍이 허락하는 한도내에서 백업을 할 경우에 디스크 액세스가 많아져서 서비스에 지장을 초래할 수
있다면 대역폭 제한 옵션을 사용해보자.
# rsync -av --progress conf.tar.gz 192.168.123.11::conf_bak building file list ... 1 file to consider conf.tar.gz 70633661 100% 11.05MB/s 0:00:06 (1, 100.0% of 1) sent 70642382 bytes received 36 bytes 10868064.31 bytes/sec total size is 70633661 speedup is 1.00 |
위는 대역폭이 허용하는 한도내(11.05MB/s)에서 rsync가 이뤄졌다. --bwlimit= 의 단위는 KBPS 이며,
--progress 는 sync되는 진행상태를 보여준다.
# rsync -av --bwlimit=1024 --progress conf.tar.gz 192.168.123.11::conf_bak building file list ... 1 file to consider conf.tar.gz 70633661 100% 1017.27kB/s 0:01:07 (1, 100.0% of 1) sent 70642382 bytes received 36 bytes 1031276.18 bytes/sec total size is 70633661 speedup is 1.00 |
2. 특정 시간 이후(또는 특정월)의 파일만 sync하는 방법
하나의 디렉토리에 년월일 구분없이 데이터가 계속 쌓이고 있다고 가정해보자.
그러나 백업을 할 때는
1) 최근 30일 동안 추가 및 변경된 파일만 sync되기를 원하거나
2) 2006년 5월 자료와 6월 자료를 별도 디렉토리로 sync되기를 원한다면
find 명령과 rsync의 --files-from= 옵션을 함께 사용하여 구현해볼 수 있다. --files-from= 옵션은
rsync 2.6.0 버전부터 추가되었으니 이전 버전을 사용하면 http://rsync.samba.org/ 에서 받아 업그레이드
하면 된다.
원본 ----> 백업본 DIR ----> BAK_DIR/01/ (2006.1월 자료) ----> BAK_DIR/02/ (2006.2월 자료) ----> BAK_DIR/03/ (2006.3월 자료) ----> BAK_DIR/04/ (2006.4월 자료) ----> BAK_DIR/05/ (2006.5월 자료) ----> BAK_DIR/06/ (2006.6월 자료) |
1) 최근 30일 자료만 모아서 dest/ 로 sync 할 때
find . -type f -mtime -30 -print | rsync -av --files-from=- . dest/ |
2) 2006.6월 파일들(수정일 기준)만 특정 서버로 sync를 할 때
find . -type f -printf "%TY_%Tm %p\n"|grep "^2006_06"|sed "s/^2006_06 //g" | rsync -av --files-from=- . 192.168.123.2::bak_dir/06 |
find 명령으로 목록을 얻은 후 -> 2006.6월 파일 목록만 grep으로 목록을 뽑아 -> rsync를 한다.
192.168.123.2 서버에는 rsync 데몬이 동작하고, rsyncd.conf에 [bak_dir] 이름의 설정이 있어야 한다.
위에서 사용한 find 의 -printf 옵션에 대해서는 find man 페이지나
http://coffeenix.net/board_view.php?bd_code=36 (유용한 find 명령어 예 모음, 글 좋은진호)을 참고한다.
이를 간단한 스크립트로 작성한 예이다. 년월지정없이 전날의 년월을 기준으로 sync를 한다.
#!/bin/bash # # by 좋은진호(truefeel) # 하루 전날의 YYYY_MM DATE=`date --date '1 days ago' '+%Y_%m'` MM=` date --date '1 days ago' '+%m'` # SRC_DIR="/data" DEST_DIR="192.168.123.2::bak_dir/$MM" # cd $SRC_DIR find . -type f -printf "%TY_%Tm %p\n"| grep "^$DATE"|sed "s/^$DATE //g" |rsync -av --files-from=- . $DEST_DIR |
3. 특정 파일 크기 이하 또는 이상의 파일은 제외하는 방법
--max-size=, --min-size= 옵션으로 특정 크기 이상의 파일은 제외(--max-size=)하거나 이하의 파일은 제외
(--min-size=)할 수 있다. --max-size= 는 rsync 2.6.4부터, --min-size= 는 2.6.7부터 추가된 옵션이다.
728x90
댓글