/etc/cron.daily ¿¡ ÆÄÀÏÀ» ¸¸µé¾î µÎ°Å³ª
crond ¿¡ µî·ÏÇؼ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù.
[±â´É¿ä¾à]
1.root °èÁ¤À¸·Î Àüü µðºñ¸¦ µðºñº°·Î ¹é¾÷ °¡´ÉÇÔ
2.¿É¼ÇÀ¸·Î Å×ÀÌºí º° ¹é¾÷ °¡´ÉÇÔ.
3.º¸Á¸ ¼³Á¤ ±â°£ ÀÌÈÄ ÀÚµ¿ »èÁ¦
--------------------------------------------source----------------------------------------------------------
#!/bin/sh
############################################################################
#
# By ÁúÁÖº»´É 2009/06/03
#
# V 2.0
#
# µ¥ÀÌÅÍ º£À̽ºº° ȤÀº Å×ÀÌºí º°·Î ¹é¾÷ ¹ÞÀ» ¼ö ÀÖµµ·Ï º¯°æÇßÀ¸¸ç
# 30 LINE ¿¡ ¸í±âµÈ ¹è¿¿¡ ¼ÓÇÏ´Â µðºñµé¸¸ Å×ÀÌºí º°·Î ¹é¾÷ ¹Þ´Â´Ù.
#
# µ¥ÀÌÅͺ£À̽º ´ÜÀ§·Î ¹ÞÀº ÆÄÀÏÀº DB. À¸·Î ½ÃÀÛÇÏ°í
# Å×ÀÌºí ´ÜÀ§´Â TB. À¸·Î ½ÃÀÛÇÏ´Â ÆÄÀϸíÀ» °®´Â´Ù.
#
# ¹é¾÷ ÆÄÀÏÀº dump.gz ·Î Çü¼º µÇ¸ç ¼³Á¤µÈ º¸Á¸ ±â°£ÀÌ Áö³ª¸é ÀÚµ¿ »èÁ¦ µÈ´Ù.
#
#############################################################################
##### SET VARIABLES ############ Àüü¸¦ ¹é¾÷ ¹ÞÀ¸·Á¸é ¿©±â¿¡ root °èÁ¤À» ÀÔ·ÂÇÑ´Ù.
DBHOST="yourhost"
DBUSER="yourid"
DBPWD="yourpassword"
#¹é¾÷ °æ·Î
BACKUPDIR="/home/your_backup_dir/"
#·Î±× ÀÛ¼º °æ·Î
LOGDIR="/home/your_backup_log_dir/"
#·Î±× ÆÄÀÏ ¾Õ¿¡ ºÙÀ» ƯÁ¤ ÅؽºÆ®
LOGNAME="log_"
###### SET DB NAMES which BACKUP by TABLES ###### ¿©±â Ç¥½ÃµÈ DB µéÀº Å×ÀÌºí º°·Î ¹é¾÷µÈ´Ù.
DB_TBARR=(dbname1 dbname2 dbname3)
#¹é¾÷ ¿É¼ÇÀ» ¿øÇÏ´Â ´ë·Î ¼³Á¤
#routine ¿É¼ÇÀº 5¹öÀü À̻󿡼¸¸ »ç¿ë(function µîÀ» ¹é¾÷ÇÔ)
OPTIONS="--skip-comments --default-character-set=euckr --routines"
##### SET CHARGE LIMIT ########## ¹é¾÷ ÆÄÀÏ ÀúÀå ±â°£(ÀÏ´ÜÀ§)
CHARGE_LMT=3
##### DELETE OLD_BACKUP FILES #######
find ${BACKUPDIR} -name "*.gz" -mtime +${CHARGE_LMT} -exec rm -rf {} \;
##### START LOG CREATE ##########
YMD_S=`date +%Y%m%d%H%M%S`
touch ${LOGDIR}${LOGNAME}${YMD_S}.start
##### DB LIST GET ###############
#IF YOU WANT TO EXCEPT SOME DATABASE ADD THIS
#grep -v Database | grep -v somename | grep -v somename`
#
#grep -v dbname ÇÏ¸é ¹é¾÷ ½Ã Á¦¿Ü µÈ´Ù.
RESULT=`mysql -u$DBUSER -p$DBPWD -h$DBHOST -e "show databases" | grep -v Database`
for DB in $RESULT; do
sw=0
##### compare DB to TBARR #####
for i in ${DB_TBARR[@]}; do
if [ $i = $DB ]; then
let "sw=sw+1"
fi
done
if [ $sw = 0 ]; then
# BACKUP by DB
FNAME=${BACKUPDIR}DB.${DB}_${YMD_S}.dump
#echo $FNAME
touch $FNAME
echo "set foreign_key_checks=0;" >> $FNAME
mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB >> $FNAME
echo "set foreign_key_checks=1;" >> $FNAME
gzip --rsyncable $FNAME
else
# BACKUP by TABLES
RESULT_TB=`mysql -u$DBUSER -p$DBPWD -h$DBHOST $DB -e"show tables" | grep -v heap | grep -v Tables_in `
for TB in $RESULT_TB; do
FNAME=${BACKUPDIR}TB.${DB}.${TB}_${YMD_S}.dump
#echo $FNAME
touch $FNAME
echo "set foreign_key_checks=0;" >> $FNAME
mysqldump -u$DBUSER -p$DBPWD -h$DBHOST $OPTIONS $DB $TB >> $FNAME
echo "set foreign_key_checks=1;" >> $FNAME
gzip --rsyncable $FNAME
done
fi
done
##### END LOG CREATE ###########
YMD_E=`date +%Y%m%d%H%M%S`
touch ${LOGDIR}${LOGNAME}${YMD_E}.end