커피닉스, 시스템 엔지니어의 쉼터 커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
* HanIRC의 #coffeenix 방
[ 장비 및 회선 후원 ]
HOME > 시스템 관리 / 서버운영 > 백업(backup) / 시스템 복구 도움말
검색 : 사이트 WHOIS 웹서버 종류


  rsync 활용(대역폭제한, 날짜별sync 등) 작성일 : 2006/06/27 16:20
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 13259
          [ 이전화면 / 수정 ]   비밀번호 :     인쇄용 화면
      제  목 : rsync 활용(대역폭제한, 날짜별sync 등)
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2006.6.16(금)

    1. rsync하는 대역폭의 제한, 그리고 --progress 옵션

    네트웍이 허락하는 한도내에서 백업을 할 경우에 디스크 액세스가 많아져서 서비스에 지장을 초래할 수
    있다면 대역폭 제한 옵션을 사용해보자.

     
    # 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부터 추가된 옵션이다.

    4. 참고자료(관련자료)

    * Re: rsync files with certain mtime
      http://archives.free.net.ph/message/20060218.002317.bb5327b3.en.html

    * Rsync release NEWS
      http://rsync.samba.org/

    * rsync의 write only 기능(쓰기만 가능한 설정, 글 좋은진호)
      http://coffeenix.net/board_view.php?bd_code=616

    * Rsync를 이용한 데이터 미러링 구축 (글 굿스피드)
      http://coffeenix.net/board_view.php?bd_code=166

    * 자료를 다른 파티션으로 그대로 백업(rsync이용, 글 좋은진호)
      http://coffeenix.net/board_view.php?bd_code=88

      커피닉스 카페 최근 글
    [10/20] Cross Compiler 깔
    [07/14] SSL АО
    [04/26] Re: 도스화면 원격조종 여부
    [04/25] 도스화면 원격조종 여부
    [10/30] Cshell에서 난수 설정
    [10/23] 공항철도주식회사 SE 구인 件
    [01/26] Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/25] wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
    [01/11] 특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
    [08/01] DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
    [05/16] (주)후이즈 시스템엔지니어 (경력자) 모집
    [02/15] [AWS] Cloudfront edge 확인하기
    [01/20] Mobile Service/eCommerce 기업에서 Server / Java / PHP 개발자 구인
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Mobile 개발자를 모십니다.
    [01/11] 탄탄한 퍼블리싱 모바일기업에서 Web Front 개발자를 모십니다.
      New!   최근에 등록한 페이지
      KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
      오픈캐스케이드 캐드 (OpenCASCADE CAD)
      QCad for Windows --- GNU GPL (Free Software)
      The Hello World Collection
      IPMI를 활용한 리눅스 서버관리
      DNS 설정 검사
      nagiosgraph 설치 방법
      Slony-I 설치 방법 (postgresql replication tool)
      Qmail기반의 Anti spam 시스템 구축하기
      clusterssh

    [ 함께하는 사이트 ]




    운영진 : 좋은진호(truefeel), 야수(yasu), 범냉이, sCag
    2003년 8월 4일~