XE

리눅스 백업서버 만들기

by 보석 posted May 01, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


홈페이지 운영에서 가장 중요한 백업은 데이터베이스와 첨부화일입니다.

DB와 첨부화일만 있으면 100%복원이 가능합니다.


물론 프로그램이나 설정화일까지 백업을 하면 시간을 많이 절약하겠지만 홈페이지를 백업하는 것은 똑같은 내용을 이중삼중으로 보관하는 것이기 때문에 디스크공간을 많이 차지합니다.

한때는 홈페이지의 데이터를 개인용 PC에서 백업했었습니다.

이방법 역시 cygwin을 통한 리눅스의 rsync를 이용하는 방법이었습니다.

기본적인 개념은 리눅스 rsync와 똑같지만 PC에서 돌아가는 프로그램인 만큼 프로그램도 다르고 설정도 차이가 있습니다. 관심있으시면 구글신하고 상담(??)을 해보시기 바랍니다.


지금은 집에 아예 버젓한 리눅스서버를 설치했으니 리눅스에서 리눅스로 설정하는 방법만 간단하게 정리를 해보겠습니다.


두대의 서버가 있고 한대의 자료를 나머지 하나로 백업하는 방법입니다.

물론 둘다 rsync가 설치되어있어야겠지요.

설치방법과 프로그램 폴더의 위치는 OS마다 다르니 참고하시기 바랍니다.

제경우는 둘다 CentOS입니다. replication과 다르기는 하지만 편의상 Master와 Slave로 표기하겠습니다.


먼저 마스터서버를 설정합니다.

[root@Mater]# vi /etc/xinetd.d/rsync 


아래 내용을 추가합니다.

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

#   allows crc checksumming etc.

service rsync

{

    disable = no

    socket_type     = stream

    wait            = no

    user            = root

    flags       = REUSE NAMEINARGS

port          = 873

#   server          = /usr/bin/rsync

server        /usr/sbin/tcpd

#   server_args     = --daemon

server_args   = /usr/bin/rsync rsyncd --daemon

only_from     = 127.0.0.1 xxx.xxx.xxx.xxxx

#   log_on_failure  += USERID

log_on_success  += DURATION HOST USERID

특히 서버프로그램의 위치는 각자 알맞게 수정해주시는 센스....


이제 rsyncd.conf에서 설정을 해줘야합니다.

[root@Mater]# vi /etc/rsyncd.conf 


일단 두개의 사이트의 첨부화일만 백업하는 방법을 설명합니다.

[MyUrlfile]

path = /home/http/htdocs/MyUrl.com/xe/files/attach

comment = My Url attach files

uid = nobody

gid = nobody

use chroot = yes

read only = yes

hosts allow = xxx.xxx.xxx.xxx

max connections = 2

timeout = 300



[OtherUrlFile]

path = /home/http/htdocs/OtherUrl.com/xe/files/attach

comment = Other Url attach files

uid = nobody

gid = nobody

use chroot = yes

read only = yes

hosts allow = xxx.xxx.xxx.xxx

max connections = 2

timeout = 3000 

path에는 백업할 화일들의 위치를 입력하고

hosts allow에는 백업화일을 저장한 slave의 ip주소를 입력합니다.

여러개의 홈페이지를 운영한다면 이런식으로 여러개의 설정이 가능합니다.


앞서도 말씀 드렸드니 DB를 따로 백업한다는 전제하에 홈페이지 첨부화일만 보관하는 것이 좋습니다.

XE의 경우 ./files 폴더에 저장되지만

cache 화일든은 생겼다 없어지고 하는 화일들이라 통채로 백업하면 쓸데없는 저장공간과 트래픽만 소모합니다.

따라서 ./files/attach 폴더만 백업하는 것이 좋습니다.


rsync를 재가동합니다.

[root@Mater]# /etc/init.d/xinetd restart 


처음설정하고나서 iptable에 의해서 막혀있는 873번포트를 개방해주지 않으면 동작하지 못합니다.

따라서 iptables에서 규칙을 추가해줍니다.


[root@Mater]#vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT 


이제 iptable을 재가동합니다.

[root@Mater]# /etc/init.d/iptables restart 


마스터에서의 설정을 여기까지..................


이제 슬레이브로 갑니다.


먼저 접속이 잘되는지 테스트해봅시다.

[root@Slave]# telnet 192.168.0.1 873

Trying 192.168.0.1...

Connected to 115.68.14.215 (115.68.14.215).

Escape character is '^] 


telnet> quit
Connection closed.

마스터 서버의 ip주소 873번 포트로 접속을 시도합니다.

연결이 되지 않는다면 마스터서버의 설정을 한번 더 살펴보시기 바랍니다.



rsync로 직접 화일을 가져와봅시다.

[root@Slave]# rsync -avz --delete 서버IP.xxx.xxx.xxx:MyUrlfile /home1/MyUrlBackup/

--delete 옵션을 사용하면 서버에서 삭제된 화일은 백업화일에서도 삭제됩니다.

이 옵션없이 백업을 하는 경우 삭제된 화일도 누적되어 남아있게 됩니다. 특히 cache나 session까지 백업되는 경우 하드공간을 한없이 차지하게 되어서 비경제적입니다.


잘 동작되는 것을 확인했으면 cron에 추가해줍니다.

[root@Slave]# vi /etc/cron.daily/backup.sh


/etc/cron.daily 폴더에 있는 쉘프로그램은 하루에 한번씩 동작합니다.

#!/bin/bash

rsync -avz --delete 서버IP.xxx.xxx.xxx:::MyUrlFile /home1/MyUrlBackup/

rsync -avz --delete 서버IP.xxx.xxx.xxx:::OtherUrlFile /home1/OtherUrlBackup/

일주일에 한번만 백업하려면 쉘스크립트를  /etc/cron.weekly 에 만들어줍니다.

만약 매시간 백업을 해야할 중요한 화일이라면 /etc/cron.hourly/에 넣어주면 됩니다.


참고 윈도우 PC에서도 rsync가 가능합니다.

이건 해봤습니다.

다만 PC에 cygwin을 깔고 rsync와 SSH등등 깔아야할 것도 많고 설정도 복잡하다.

요즘에는 사용을 하지 않는 가장 큰이유는 한글과 화일이름때문...

utf8을 yp949로 변환해야하고

리눅스는 대소문자를 구분하지만 윈도우즈는 구분을 안한다.

즉 리눅스서버에는 AAA.jpg가 있고 aaa.jpg가 있을 수 있지만 윈도우즈에는 둘중 하나만 저장된다. 

쉽게 말해서 하나는 소실이 된다... 안쓴다...

XE에서는 별 문제가 없겠지만 옛날 제로보드4처럼 한폴더에 화일을 몽땅 처넣는 방식의 경우 겹치는 화일이 몽땅 소실됬다..



Articles

2 3 4 5 6 7 8 9 10 11