NEW Nmail PHP 3 업그레이드 할인
자세히 보기

크론 데몬을 활용한 메일 데이터 자동백업 방법

PASSKOREA 2007.07.23 16:33 조회 23959

리눅스 서버에서 기본제공되는 크론 데몬을 활용해서
매일 새벽에 메일데이타를 자동백업하는 방법에 대한 안내입니다.


주의사항)
자동백업의 경우 하드용량이 초과되지 않도록 주기적인 모니터링과
적절한 백업기간을 설정해주시는것이 아주 중요합니다.
특히, 별도의 백업용 디스크가 없는 상황에서 하드용량이 초과될 경우
다른 서비스가 중단될 가능성이 있기 때문입니다.
따라서 서버백업 경험이 없으시거나, 주기적인 모니터링이 불가능할 경우 절대 사용하시면 안됩니다.
(별도의 유지보수계약시 대행이 가능합니다. 전화/메일문의요망)


1. 백업용 하드디스크가 별도로 존재할 경우의 백업위치 재지정방법입니다.
백업용 하드디스크가 따로 없다면 이 부분은 무시하시고 넘어가시면 됩니다.

# 엔메일 백업 디렉토리를 다른 파티션으로 이동시킨 후 심볼릭링크 생성.
mv /home/nmail2/_backup /backup/nmail_backup
ln -s /backup/nmail_backup /home/nmail2/_backup


2. 서버에 접속후 쉘모드에서 아래 내용을 복사해서 붙여넣으시면 크론데몬에 등록됩니다.
/etc/cron.daily 에 등록되는 스크립트들은 /etc/crontab 설정에 의해 매일 새벽 4시 2분에 자동실행됩니다.

# 크론데몬 등록 스크립트
echo '#!/bin/sh
# 5일이 지난 데이타는 자동 삭제함 #
find /home/nmail2/_backup/ -mtime +5 -type f -name "nmail2*gz" -exec ls -l {} \;
find /home/nmail2/_backup/ -mtime +5 -type f -name "nmail2*gz" -exec rm -f {} \;
# 엔메일 데이타 백업
/home/nmail2/_backup/backup.sh
' > /etc/cron.daily/nmail_backup.cron
chmod 700 /etc/cron.daily/nmail_backup.cron


3. 크론데몬에 등록된 스크립트가 제대로 실행되는지 테스트해봅니다.

/etc/cron.daily/nmail_backup.cron
ls -l /home/nmail2/_backup/


4. 백업된 데이타가 정상적인지 확인하는 과정은 필수입니다.
- tar.gz 형태의 파일을 압축한 경우 다른 디렉토리에 파일을 풀어서 제대로 풀리는지만 테스트해보시면 됩니다.
- sql.gz 형태의 디비백업을 한 경우 서버설정에 따라 백업시 한글이 깨지는 경우가 있으므로 꼭 확인해보셔야 합니다.
a) 파일을 PC로 다운로드받아 editplus, ultraedit 등의 에디터에서 열어서 확인하는 방법.(권장)
b) 서버의 한글설정이 제대로 되어 있을때 쉘상에서 바로 확인하는 방법.
# 한글설정 확인. UTF-8 전용 엔메일이 아닌 경우 아래처럼 결과가 나와야 합니다.
locale
LANG=ko_KR.eucKR
# CentOS 등 일부 시스템은 기본 UTF-8로 된 경우가 있는데 아래처럼 한글로 변경하면 됩니다.
export LANG=ko_KR.eucKR
# 압축을 풀어 백업된 파일에서 한글이 들어간 라인을 찾아 제대로 보이는지 확인.
gunzip -c nmail2_20070402_105744.sql.gz|more


5. 서버의 백업공간이 부족할 경우 find 명령에서 백업데이타 보관기간인
'+5'를 적절한 일수로 변경해주시면 됩니다.

# 자동백업 보관기간 변경
vi /etc/cron.daily/nmail_backup.cron


6. 마지막으로 한 번 더 강조드리지만 하드용량에 비해 보관중인 백업데이타가
지나치게 많을 경우 하드용량이 초과해 서비스에 장애가 생길 수 있습니다.
반드시 주기적인 모니터링을 통해 안정성을 확보하시기 바랍니다.

# 하드용량 확인
df -h

# 백업 디렉토리 용량 확인
ls -lh /home/nmail2/_backup/
du -ms /home/nmail2/_backup/


이전 글 [메일서버관리 - 메일 발송 테스트] 실패시의 대처방법 (PHP mail 발송 실패) PASSKOREA 2007.10.25
다음 글 다른 프로그램에서 엔메일의 새로운 메일을 확인하는 쿼리문 PASSKOREA 2007.06.19