Linux
리눅스 - RSYNC를 이용한 파일 백업
리눅스로 시스템을 이용하다보면 시스템이 반드시 안정적으로 운영되지는 않습니다. 외부 침입 공격으로 파일이 삭제될 수 있고, 관리자의 실수로 인해 오작업으로 시스템에 오류가 발생하기도 하고, 다수의 사용자에 의해 실행권한에 따라 파일이 삭제되거나 시스템오류가 생길 수도 있고, 하드웨어 고장으로 문제를 일으키기도 합니다.
그러므로 이러한 문제가 발생하기 전에 미리 백업을 받아두어 후일을 준비할 필요가 있습니다.
자료의 양에 따라 주기적으로 준비를 해야 하며 자료의 양이 많을 경우 rsync 데몬으로 백업을 하도록 하고, 방문자수가 적은 시간대, 즉 새벽시간에 백업을 받는 것도 중요 포인트라 할 수 있겠습니다. 하지만, 시스템설정파일 및 사용자 정보와 각종 시스템운영과 관련된 파일은 따로 보관하는 습성을 가져야 합니다.
tar를 이용한 백업방법이나 명령어는 파일 압축명령어를 참고하면 되겠습니다.
아파치 웹서버를 백업하는 경우는 파일시스템 오류나 데몬이 정상적으로 작동하지 않을 경우를 대비하기 위함입니다. 아무리 좋은 시스템이라도 장애는 생길 수 있으므로 백업은 받아 두는 습관을 가져야 할 것 같습니다.
백업된 파일만 보관하고 있다면 다시 복구해서 사용가능하지만 경우에따라서 다른 방법을 이용하여 복구할 때도 있을 것입니다. 예를 들자면, 선로의 장비나 속도, 시간대, 서비스 개선사항 등 안전하면서도 빠르게 복구할 수 있는 방법으로 복구하여야 합니다.
백업장치는 근래에 들어서 하드 디스크가 저렴하면서 고용량을 지원하게 되었으므로 IDE 나 SATA 를 이용한 백업도 괜찮다 생각됩니다. 물론 백업파일의 보유기간이 단기일때의 예입니다. 최근의 자료만을 유지할때의 백업이나 이동식 랙을 서버에 장착 후 정비시간에만 시스템을 정지하고, 하드를 추가하면 백업이 가능합니다.
자료가 대용량일 경우 문제가 되지만 이동식 랙 잠금 장치를 잘만 이용하면 서버에서 제거하지 않고 백업 자료의 업데이트가 가능합니다.
주의점이라면 한개의 백업 파일이 2기가를 넘지 않아야 하는데, 만약 2기가를 넘게 될 경우 파일 생성이 되지 않는다는 것이며 또한 안전한 운영을 위해 파일 시스템도 reiserfs 나 ext3을 이용하는 것을 권장할만합니다.
따라서 rsync 는 필요한 디렉토리 및 필요한 파일을 지정하여 자료를 백업할 수 있으며, 서비스 이용에 따라 변화하는 자료를 실시간으로 계속 백업을 가능하게 할 수 있으므로 무엇보다도 서비스에 많은 영향을 주지 않으면서도 환경을 원활하게 유지할 수 있는 장점을 가질 수 있겠습니다.
rpm 명령어를 이용하면 rsync 패키지가 설치되어 있는지를 확인할 수 있는데 설치가 되어 있지 않다면 http://pkgs.org/download/rsync 링크에서 환경에 맞는 버전을 다운받아 설치 하도록 합니다. rpm 명령어는 관련글(2011/07/06 - [웹서버/리눅스] - rpm과 yum 명령어 사용법)을 참고해 주시면 됩니다.
rsync 를 rpm으로 설치하였다면 rsync 설정파일을 완료해줄 필요가 있습니다. 정상적으로 서비스가 가능한지 먼저 /etc/services 파일을 열어 첫 머리 rsync 부분에 주석이 있을 경우 주석을 제거해 주도록 합니다. 참고로 rsync 는 873 포트를 사용합니다.
다음으로 rsyncd.conf 파일을 열어 설정해둘 필요가 있습니다. 다음의 명령어로 파일의 위치를 찾을 수 있습니다.
보통 설정파일이 위치하는 디렉토리는 etc/rsyncd.conf 에 위치하지만 처음 설치시 rsyncd.conf 파일은 존재하지 않습니다. 따라서 etc/ 폴더에 rsyncd.conf 파일을 생성하여야 하고, 내용을 다음과 같은 방식으로 작성합니다.
위 설정 참조는 아래를 참고하시면 됩니다.
이제 설정항목을 완료했으면 자료를 수신가능하도록 rsync 데몬을 수행해야 합니다. /etc/xinet.d 디렉토리에 rsync 파일이 존재하는지 확인하고, 없다면 다음과 같이 설정 파일을 생성합니다. xinet 데몬에 운영되기 위한 /etc/xinet.d 디렉토리의 rsync 파일을 설정하는 것입니다.
만약 초기파일이 존재한다면 disable 항목이 yes로 되어 있다면 위와 같이 no로 바꾸어 주어야 합니다. 설정을 완료하면 "service xinetd restart" 로 서비스를 재시작해줍니다. 이제 다음의 명령어로 설정이 정상적인지 확인을 해봅니다.
위의 명령어와 옵션은 #rsync 서버의 home으로 지정된 자료를 . 에 저장하라는 지시로 자세한 옵션과 설명은 다음 표를 참고하면 되겠습니다.
여기서 주의할 점은 home/uid 와 home/uid/ 의 차이입니다. 끝에 /가 있으면 uid 디렉토리 내부의 자료만을 수신하고, 끝에 / 없이 home/uid로 지정하면 uid 디렉토리를 포함하여 자료를 수신하는 차이를 가집니다.
그러므로 이러한 문제가 발생하기 전에 미리 백업을 받아두어 후일을 준비할 필요가 있습니다.
자료의 양에 따라 주기적으로 준비를 해야 하며 자료의 양이 많을 경우 rsync 데몬으로 백업을 하도록 하고, 방문자수가 적은 시간대, 즉 새벽시간에 백업을 받는 것도 중요 포인트라 할 수 있겠습니다. 하지만, 시스템설정파일 및 사용자 정보와 각종 시스템운영과 관련된 파일은 따로 보관하는 습성을 가져야 합니다.
tar를 이용한 백업
아래는 tar 명령어를 이용하여 백업된 파일 내용입니다. bak01.tar.gz bak02.tar.gz bak03.tar.gz data.12.04.02.tzr.gz data.12.05.05.tzr.gz
data.12.06.02.tzr.gz etc.tar.gz home01.tar.gz home02.tar.gz home03.tar.gz
home04.tar.gz home05.tar.gz home06.tar.gz home07.tar.gz home08.tar.gz
tar를 이용한 백업방법이나 명령어는 파일 압축명령어를 참고하면 되겠습니다.
아파치 웹서버를 백업하는 경우는 파일시스템 오류나 데몬이 정상적으로 작동하지 않을 경우를 대비하기 위함입니다. 아무리 좋은 시스템이라도 장애는 생길 수 있으므로 백업은 받아 두는 습관을 가져야 할 것 같습니다.
백업된 파일만 보관하고 있다면 다시 복구해서 사용가능하지만 경우에따라서 다른 방법을 이용하여 복구할 때도 있을 것입니다. 예를 들자면, 선로의 장비나 속도, 시간대, 서비스 개선사항 등 안전하면서도 빠르게 복구할 수 있는 방법으로 복구하여야 합니다.
백업장치는 근래에 들어서 하드 디스크가 저렴하면서 고용량을 지원하게 되었으므로 IDE 나 SATA 를 이용한 백업도 괜찮다 생각됩니다. 물론 백업파일의 보유기간이 단기일때의 예입니다. 최근의 자료만을 유지할때의 백업이나 이동식 랙을 서버에 장착 후 정비시간에만 시스템을 정지하고, 하드를 추가하면 백업이 가능합니다.
자료가 대용량일 경우 문제가 되지만 이동식 랙 잠금 장치를 잘만 이용하면 서버에서 제거하지 않고 백업 자료의 업데이트가 가능합니다.
주의점이라면 한개의 백업 파일이 2기가를 넘지 않아야 하는데, 만약 2기가를 넘게 될 경우 파일 생성이 되지 않는다는 것이며 또한 안전한 운영을 위해 파일 시스템도 reiserfs 나 ext3을 이용하는 것을 권장할만합니다.
rsync 데몬을 이용한 백업
rsync 데몬은 백업 서버를 따로 구축하여 원격으로 현재 서비스 중인 서버의 자료를 받아 백업하는 방법을 말합니다. 신뢰된 서버에 자료를 전송하도록 허가하는 방식으로 이용되며, 주로 거대한 서비스를 여러대의 서버로 부하를 분산하는 클러스터링에 이용하기 위해 많이 이용하는 방법입니다.따라서 rsync 는 필요한 디렉토리 및 필요한 파일을 지정하여 자료를 백업할 수 있으며, 서비스 이용에 따라 변화하는 자료를 실시간으로 계속 백업을 가능하게 할 수 있으므로 무엇보다도 서비스에 많은 영향을 주지 않으면서도 환경을 원활하게 유지할 수 있는 장점을 가질 수 있겠습니다.
rpm 명령어를 이용하면 rsync 패키지가 설치되어 있는지를 확인할 수 있는데 설치가 되어 있지 않다면 http://pkgs.org/download/rsync 링크에서 환경에 맞는 버전을 다운받아 설치 하도록 합니다. rpm 명령어는 관련글(2011/07/06 - [웹서버/리눅스] - rpm과 yum 명령어 사용법)을 참고해 주시면 됩니다.
rsync 를 rpm으로 설치하였다면 rsync 설정파일을 완료해줄 필요가 있습니다. 정상적으로 서비스가 가능한지 먼저 /etc/services 파일을 열어 첫 머리 rsync 부분에 주석이 있을 경우 주석을 제거해 주도록 합니다. 참고로 rsync 는 873 포트를 사용합니다.
phonebook 767/tcp # network phonebook
phonebook 767/udp
rsync 873/tcp # rsync
rsync 873/udp
다음으로 rsyncd.conf 파일을 열어 설정해둘 필요가 있습니다. 다음의 명령어로 파일의 위치를 찾을 수 있습니다.
rpm -ql rsync
보통 설정파일이 위치하는 디렉토리는 etc/rsyncd.conf 에 위치하지만 처음 설치시 rsyncd.conf 파일은 존재하지 않습니다. 따라서 etc/ 폴더에 rsyncd.conf 파일을 생성하여야 하고, 내용을 다음과 같은 방식으로 작성합니다.
[web]
path = /home/www
comment = web
uid = nobody
gid = nobody
use chroot = yes
read only = yes
hosts allow = xxx.xxxx.xxx
max connections = 3
timeout 600
위 설정 참조는 아래를 참고하시면 됩니다.
- [web] 항목: rsync 서버의 자료 목록의 이름표를 의미
- path 항목: 홈디렉토리 경로
- comment 항목: 서비스 제공에 대한 설명
- uid 항목: 파일의 사용자 권한, 기본값 nobody
- gid 항목: 그룹권한, 기본값 nobody
- use chroot 항목: 상위 디렉토리이 액세스를 제한하는 설정, 보안상 yes
- read only 항목: 읽기만 가능하게 설정, 자료의 변경을 방지
- hosts allow 항목: 자료를 원격으로 수신할 서버 도메인이름이나 ip를 입력
- max connections 항목: 동시접속 최대 접속허가 수
- timeout 항목: 자료수신이 600초동안 응답이 없으면 연결해제
이제 설정항목을 완료했으면 자료를 수신가능하도록 rsync 데몬을 수행해야 합니다. /etc/xinet.d 디렉토리에 rsync 파일이 존재하는지 확인하고, 없다면 다음과 같이 설정 파일을 생성합니다. xinet 데몬에 운영되기 위한 /etc/xinet.d 디렉토리의 rsync 파일을 설정하는 것입니다.
# default: off
# description The rsync server is a good addition to am ftp server . as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = no
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
만약 초기파일이 존재한다면 disable 항목이 yes로 되어 있다면 위와 같이 no로 바꾸어 주어야 합니다. 설정을 완료하면 "service xinetd restart" 로 서비스를 재시작해줍니다. 이제 다음의 명령어로 설정이 정상적인지 확인을 해봅니다.
# rsync -avz 182.210.87.146::home
위의 명령어와 옵션은 #rsync 서버의 home으로 지정된 자료를 . 에 저장하라는 지시로 자세한 옵션과 설명은 다음 표를 참고하면 되겠습니다.
rsync -avz [접속호스틈명]::[자료명] [자료받을 디렉토리명]
- -v 옵션: verbose 자세한 설명을 출력하는 옵션
- -a 옵션: archive mode 옵션 -rlpfg 의 의미와 동일하게 사용됨
- -z 옵션: compress 자료를 전송 시 압축하여 전송
- -r 옵션: recursive 하위 디렉토리까지 포함하여 자료를 수신
- -l 옵션: 심볼릭 링크를 다시 생성함
- -p 옵션: 실행권한을 클라이언트 서버로 전송시 최신정보로 갱신함
- -t 옵션: 파일, 디렉토리의 변경시간을 전송, 옵션 생략시 현재 시간으로 파일이 생성됨
- -g 옵션: 현재 수신한 사용자의 그룹으로 그룹 변경함
- -delete 옵션: 클라이언트가 수신할 때 서버에 존재하지 않는 파일이 클라이언트에 존재하면 삭제합니다.
이 옵션을 사용할 경우 서버의 자료와 동일하게 클라이언트에 유지됩니다. cron 데몬에 명령어를 사용할 경우 불필요하게 디스크공간이 낭비하는것을 방지할 수 있게 됩니다.
#rsync -avz 192.168.0.2::www /backup
[www 으로 지정된 자료를 /backup에 저장합니다.]
# rsync -avz habonyphp.com::home/uid /backup/myid
[home/uid 로 지정된 자료를 /backup/myid 에 저장합니다.]
여기서 주의할 점은 home/uid 와 home/uid/ 의 차이입니다. 끝에 /가 있으면 uid 디렉토리 내부의 자료만을 수신하고, 끝에 / 없이 home/uid로 지정하면 uid 디렉토리를 포함하여 자료를 수신하는 차이를 가집니다.
0 댓글