본문 바로가기
Easy Mac

맥에서 변경 파일만 백업해주는 스크립트 (Rsync 백업)

by D.Flicker 2013. 4. 14.

타임머신을 이용하고 있었습니다. 물론 매시간 백업을 해주고, 시스템 전체를 백업해 주기 때문에 정말 유용한데요. 매시간 디스크에 접근을 해서 하드디스크가 정말 분주합니다. 그래서 rsync를 이용해서 증가분만 백업해 주는 스크립트를 만들어 보았습니다. 하루에 한 번 잠자기 전에 스크립트를 실행시켜 놓으면 이전 백업과 현재 디스크의 파일을 비교해서 변화된 파일만 백업해주게 됩니다. 그리고 최근 7번의 백업을 서로 다른 디렉터리에 나누어 저장해 놓아 이전에 사용하던 파일들도 보관하게 됩니다. 물론 crontab을 이용하면 매일 같은 시간에 백업하도록 할 수 있지만, 매번 외장하드디스크를 연결하고 있는 것도 하니고 해서 crontab 이용 부분은 제외했습니다.

여기서 많은 분이 궁금해하시는 부분이 7개의 다른 백업을 저장한다면 백업 용량이 7배가 되지 않느냐고 하시는데요. Hard link라는 기능을 이용하기 때문에 백업 용량은 `초기의 백업 용량 + 변화된 파일만의 용량`이 됩니다.

그럼 시작해 보겠습니다.

    1. cp -l 옵션을 이용할 수 있도록 설정. Rsync 설치하기

    먼제 본 스크립트를 실행하기 위해서는 cp 명령어에서 -l 옵션을 이용할 수 있어야 합니다.
    이 부분은 이전 포스팅[맥에서 cp -l 옵션 이용하기]을 참고해서 만드시 수행하여야 합니다.

    다음으로 rsync 설치를 해야 합니다. 다음 사이트를 참고 하시면 문제없이 설치가 가능합니다. [Rsync 3.0.9 for Lion]


    2. 백업 스크립트 수정

    올려놓은 make_rotating_snapshot.sh 파일을 내려받습니다. 29~31줄을 보면 아래와 같은 부분이 있는데요.

    MOUNT_DEVICE=/dev/disk2s2;
    SNAPSHOT_RW=/Volumes/externalHDD/BACKUP;
    EXCLUDES=/Users/username/Documents/scripts/crontab/exclude;

    터미널에 df 라는 명령어를 입력하면 현재 컴퓨터에 연결되어 있는 장치 정보가 표시됩니다.


    MOUNT_DEVICE.     외장하드에 해당되는 마운트 경로를 입력합니다.
    SNAPSHOT_RW.      외장하드에 백업할 디렉터리 경로를 입력합니다.
    EXCLUDES.              다운로드 받은 exclude 파일 경로를 입력합니다.


    exclude 파일은 백업 시 제외할 디렉터리를 모아두는 파일인데요. Public과 휴지통 경로를 기본으로 넣어 두었습니다.

    89번째 줄을 보면 /Users/username/ $SNAPSHOT_RW/home/daily.0 이 있습니다.
    /Users/username/ 에 본인의 홈디렉토리를 입력합니다. 저는 저의 홈디렉토리(Finder 실행시 가장 먼저 나오는 디렉토리)만 백업하기 위해 홈디렉터리만 입력하였고, 백업을 원하는 디렉터리를 입력하면 그 디렉터리 및 하위 디렉터리의 모든 파일을 백업합니다.


    3. 스크립트를 실행이 가능하도록 권한을 변경해 줍니다.

    chmod +x make_rotating_shapshot.sh


    4. 스크립트를 실행합니다.

    ./make_rotating_snapshot.sh

    첫 백업에는 해당 파일을 모두 복사해야 하므로 백업 시간이 오래 걸립니다. 하지만 두번째 백업 부터는 변경된 파일만 복사하므로 백업시간이 크게 단축되는 것을 볼 수 있습니다.



See also.



exclude make_rotating_snapshot.sh