rsync backup – 파일 복사/백업

서로 다른 두 서버 혹은 로컬내 파일카피, 백업등에는 rsync 는 참으로 유용하다. 두번째  실행부터는 새로 가감된 파일만 추가해주니 말이다.

참조문서 : https://help.ubuntu.com/community/rsync

그리고 로컬카피라면은 rsync 서버를 따로 띄울 필요없이 사용하면 된다. 그러나 서로 다른 서버라면은 3가지 방식이 존재할듯 하다

  1. rsync + xinetd(inetd)
  2. rsync server
  3. rsync + ssh

1번 방법은 참조문서대로 하면 될듯 하고, 2번째 방법은 inetd를 사용하지 않고 직접 rsync서버를 사용하면 된다.(port: 873)
이중 3번 rsync + ssh의 경우 rsync 서버를 돌리지 않고 ssh-server가 있다면 언제든지 사용가능하다.

rsync -ave ssh --delete "/var/www/test" "xxx.xx.xx.xxx:/var/www/test"

ssh 공개키를 이용해서 설정을 해두면  rsync 실행시 계정 암호를 입력하지 않아도 된다.

rsync와 함께 사용할 백업스크립트를 작성해보았다. 보통 cron으로 돌릴때(짧은 시간동안 반 실행) 중복실행을 피하기 위해 lock을 이용하도록 했다. 그리고 스크립트 중단은 process kill보다는 stop 파일을 만들어줌으로서 중단하는 방법을 쓰는게 좋은데, 혹시나 만들어진 lock파일을 위해 처음 한번 실행할때는 스크립트에 뒤에 아무 인수나 줘서 lock을 초기화 한다.

이부분을 잘만 이용하면, 두 서버간의 파일 싱크를 유지할수 있고,  간단히 서버부하를 줄일수 있다. 예를 들면 웹서버에서 이미지등의 파일부분만 따로 떼어내어서 서버를 구성하면 서버 부하에 많은 도움이 된다. unison등과 적절히 용도에 따라 적절히 사용하면 좋을듯 하다.

#!/bin/sh
#usage : sync_script.sh [refresh]
LOCK=~/lock
STOP=~/stop
FILE=xxx.xxx.xxx.xxx
if [ -z $1 ]; then
  rm -rf $LOCK
fi
if [ ! -r $LOCK ] && [ ! -r $STOP ]; then
  echo script start!
  touch $LOCK
  # backup script
  rm -rf $LOCK
  echo script end!
fi

글쓴이

yupmin

Inside Deep Throat.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.