본문 바로가기

넋두리/linux 이야기

rsync를 이용한 리눅스박스의 특정 디렉토리 백업.

두 서버의 대상디렉토리를  서로 백업한다. 즉, box1은 box2의 디렉토리를, box2는 box1의 디렉토리를 백업.
1. 작업환경.
BOX1
IP: 192.168.100.3
대상디렉토리: /srv/storage
BOX2
화일서버:
IP: 192.168.200.3
대상디렉토리: /srv/storage
2. 작업내용.
BOX1 사용공간 확인
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             133G   25G  102G  20% /
tmpfs                1013M     0 1013M   0% /lib/init/rw
udev                 1009M   92K 1008M   1% /dev
tmpfs                1013M     0 1013M   0% /dev/shm
/dev/sdb1             135G  188M  128G   1% /srv/storage/dest1
BOX2 사용공간 확인
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/turnkey-root
                      201G  131G   61G  69% /
none                  981M  236K  980M   1% /dev
none                  986M     0  986M   0% /dev/shm
none                  986M  7.3M  978M   1% /var/run
none                  986M     0  986M   0% /var/lock
none                  986M     0  986M   0% /lib/init/rw
/dev/sda1             228M   97M  120M  45% /boot
ssh-keygen을 이용하여, BOX1, BOX2
BOX1, BOX2에서, 서로 ssh접속시 password를 묻지 않도록 ssh-keygen을 이용하여 설정(과정생략)
BOX1 에서 BOX2의 화일을 동기화하는 스크립트(get_dest1.sh)
#!/bin/sh
# Scripted by snowfox.
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/.ssh/id_dsa
RUSER=root
RHOST=192.168.200.3
RPATH=/srv/storage
LPATH=/srv/storage/dest1
$RSYNC -az -e ssh –delete –exclude ‘dest2′ $RUSER@$RHOST:$RPATH $LPATH
BOX2에서 BOX1의 화일을 동기화 하는 스크립트(get_dest2.sh)
#!/bin/sh
# Scripted by cho hyun-ho.
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/.ssh/id_dsa
RUSER=root
RHOST=192.168.100.3
RPATH=/srv/storage/_SETWORK
LPATH=/srv/storage/dest2
$RSYNC -az -e ssh –delete $RUSER@$RHOST:$RPATH $LPATH
rsync가 정상적으로 동작하는지 확인한다.
정상적으로 작동하면, 위의 스크립트를 crontab에 등록하여 특정 주기로 반복하도록 한다.