리눅스 에서 MySQL 자동 백업하고 FTP서버로 자동전송리눅스 에서 MySQL 자동 백업하고 FTP서버로 자동전송

Posted at 2010. 10. 5. 13:10 | Posted in Server
반응형
리눅스 에서 MySQL 자동 백업하고 FTP서버로 자동전송
/backup 아래에 backup.sh 이라는 파일을 만들어 놓고 백업 명령어를 다음과 같이 주었다.
 
#cd /backup
#vi backup.sh
-- 화일 내용 --
#/bin/sh
NEW_FILE=`date -d "0 days" +%Y%m%d`
DEL_FILE=`date -d "-20 days" +%Y%m%d`
 
echo ---  MYSQL Delete : ${DEL_FILE} ----
# 20일이 지난건 지워버림
rm -rf ${DEL_FILE}.tar.gz
rm -rf ${DEL_FILE}
 
#오늘 날짜것도 지움
rm -rf ${NEW_FILE}.tar.gz
rm -rf ${NEW_FILE}
 
echo ---  MYSQL START ----
mysqldump -uxx -pxx --extended-insert=false --default-character-set=utf8 mysql > /backup/${NEW_FILE}-mysql
mysqldump -uxx -pxx --extended-insert=false --default-character-set=utf8 abc   > /backup/${NEW_FILE}-abc

echo -------------- MYSQL TAR ----------------
tar cf ${NEW_FILE}.tar ${NEW_FILE}*
gzip ${NEW_FILE}.tar
 
echo -------------- MYSQL TAR FTP 전송 ----------------
USERNAME=아리이디 
PASSWORD=암호
HOST=FTP서버 주소
{
echo user $USERNAME $PASSWORD
echo bi
echo prompt
echo cd /server-data
echo put ${NEW_FILE}.tar.gz
echo bye
} | ftp -n -v $HOST > log
화일 편집 ...끝...
-------------------------------------------------------------------------------------
#chmod 100 backup.sh로 단단히 무장하라.
그리고 crontab -e 명령으로 cron 작업을 명시하자
00 06 * * * /backup.sh
를 추가하고 :x 로 저장하고 나오자.
위의 작업은 매일 새벽 6시에 /backup.sh을 실행하라 라는 말이다.
 
그럼 vi가 열리면서 편집이 가능하다
/var/spool/cron/root가 있는지 확인해보자. 있다면 정상적으로 수행할 것이다.
 
Crontab 의 메일 안받기 
/etc/crontab이라는 파일을 열어보자
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=ROOT
HOME=/
부분이 있다. MAILTO=ROOT를 다음과 같이 고쳐보자
MAILTO=""
크론에 등록시 아래와 같이 하면 메일이 날아오지 않는다.
위에꺼는 전체 메일이 다 날아오지 않으므로 주의 해야 한다.
그러므로 아래꺼 사용하믄 된당...
00 06 * * * /root/backup.sh >/dev/null 2>&1
저장할 파일의 크기가 클경우 분할하여 압축할수 있다.
백업을 하다보면 기가단위가 넘을때가 많습니다.
그때는 분할백업(CD 1장 단위가 좋겠죠...)
tar -zcvpf - /압축할dir | split -b 670mb - 압축파일.tar.gz
그러면 압축파일.tar.gzaa 
압축파일.tar.gzab순으로 파일이 생깁니다.
-b 670mb는 압축파일을 670mb단위로 분할 하라는 옵션입니다.
압축풀라고 할때는 (쿠쿠 바로 답해 주셔서 캄솨함다.)
cat test.tar.gza* > test.tar.gz
로 하여 tar.gz파일로 만들어서 풀면 된다.
반응형

//