맛집 여행 캠핑 일상 생활

리눅스 사용자 DB & Data 자동 백업 본문

LAMP

리눅스 사용자 DB & Data 자동 백업

영은파더♥ 2016. 2. 26. 13:24

유저 DB 및 Data를 자동으로 백업시켜주는 쉘스크립트이다.

7일간 데이터를 보관하고 7일전 데이터는 삭제를 해준다.


mysqldump 에 옵션을 자신에게 맞도록 수정해 주면 된다.

--lock-tables=false 로 된걸 true로 해줘도 되긴 하지만 테이블에 데이터가 많은 경우 락이 걸려서 백업될 동안은 대기상태로 있어야 한다. 


#!/bin/bash


DB_ROOT_ID="root"

DB_ROOT_PW="비밀번호"

TODAY=`date +%Y%m%d`

DELETE_DATE=`date +%Y%m%d --date='7 days ago'`

DAY_OF_WEEK=`date +%u`

HOME_DIR="/home"

BACKUP_DIR="/backup"


echo "

Start : "`date` >> /root/backup-users.log


for USER_NAME in $(ls $HOME_DIR)

do

if [ -d "$HOME_DIR/$USER_NAME" ] ; then

        USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}"


        if [ ! -d "$USER_BACKUP_DIR" ] ; then

                mkdir -m 700 $USER_BACKUP_DIR

        fi


        if [ ! -d "$USER_BACKUP_DIR/$TODAY" ] ; then

                mkdir -m 700 $USER_BACKUP_DIR/$TODAY

        fi

        USER_BACKUP_DIR="${BACKUP_DIR}/${USER_NAME}/${TODAY}"


        DB_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}.sql.gz"

        mysqldump -u${DB_ROOT_ID} -p${DB_ROOT_PW} ${USER_NAME} --opt --lock-tables=false | gzip > ${DB_BACKUP_NAME}

        chown ${USER_NAME}.${USER_NAME} $DB_BACKUP_NAME


        sleep 10

        USER_DIR="${HOME_DIR}/${USER_NAME}"

        DATA_BACKUP_NAME="${USER_BACKUP_DIR}/${USER_NAME}_data.tgz"

        cd ${USER_DIR}

        tar czfp $DATA_BACKUP_NAME ./www

        chown ${USER_NAME}.${USER_NAME} $DATA_BACKUP_NAME

        cd


        USER_BACKUP_DEL_DIR="${BACKUP_DIR}/${USER_NAME}/${DELETE_DATE}"

        if [ -d "$USER_BACKUP_DEL_DIR" -a "$USER_BACKUP_DEL_DIR" != "" ] ; then

                sleep 5

                rm -rf ${USER_BACKUP_DEL_DIR}

        fi

        sleep 5

fi

done


echo "End User Backup : "`date` >> /root/backup-users.log

DB_ROOT_ID="root"        MySQL 루트 아이디

DB_ROOT_PW="비밀번호"

HOME_DIR="/home"        유저 디렉토리 위치

BACKUP_DIR="/backup"    백업될 디렉토리 위치

위의 4가지 정보만 수정해주고 적당한 파일명으로 저장한 뒤에 퍼미션을 700으로 바꾸고 크론에 등록해 주자.

서버가 조용한 시간에 백업스크립트가 돌아가게끔 cron에 등록해주면 된다.


Trackback : | Comments :