it

DB 및 계정별 파일 백업 스크립트

빅파워 2017. 9. 28. 02:19


DB 및 계정별 파일 백업 스크립트


# /etc/cron.daily/backup 생성


#!/bin/sh

LANG=en

PATH=/usr/bin:/bin

DOW=`date +%a`

DOM=`date +%d`

HOMEDIR=/home

BACKUPDIR=/backup

MYSQLPASSWD="***************"


cd ${HOMEDIR}

        for USER in *; do

                if [ $DOW = "Mon" ]; then

                        NOW=`date +%d-%b`

                        echo $NOW > ${BACKUPDIR}/last-full-date

                        mv -f ${BACKUPDIR}/data/${USER}-${DOW}.tar ${BACKUPDIR}/data/${USER}-${DOW}.old.tar

                        tar -cpf ${BACKUPDIR}/data/${USER}-${DOW}.tar ${HOMEDIR}/${USER}/public_html --exclude=files --exclude=data

                else

                        if [ -f ${BACKUPDIR}/last-full-date ]; then

                                NEWER="--newer=`cat ${BACKUPDIR}/last-full-date`"

                        fi

                        tar -cp ${NEWER} -f ${BACKUPDIR}/data/${USER}-${DOW}.tar ${HOMEDIR}/${USER}/public_html --exclude=files --exclude=data

                fi

        done


DATABASE=`mysql -u root -p${MYSQLPASSWD} -e "show databases;" -s`

for DB in ${DATABASE}; do

        mysqldump -u root -p${MYSQLPASSWD} --single-transaction --opt ${DB} --extended-insert=false > ${BACKUPDIR}/db/${DB}-${DOW}.sql

done


cd /

tar -cpf ${BACKUPDIR}/system/etc-${DOW}.tar etc

tar -cpf ${BACKUPDIR}/system/usr-${DOW}.tar usr

tar -cpf ${BACKUPDIR}/system/root-${DOW}.tar root



스크립트 실행되는지 확인하기



[root@localhost]# /etc/cron.daily/backup

bash: /etc/cron.daily/backup: 허가 거부

[root@localhost]# chmod 755 /etc/cron.daily/backup




# crontab -e 로 수정



01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

05 4 * * * root run-parts rsync -av /home/ /backup/home/

22 4 * * 0 root run-parts /etc/cron.weekly

44 4 1 * * root run-parts /etc/cron.monthly




crontab으로 외부 페이지 실행



01 * * * * root run-parts wget "url"




증분백업




$ rsync -av /home/ /backup/home/ # 원본 증분 백업

$ rsync -av --delete /home/ /backup/home/ #원본 증분 백업, 원본 파일 삭제시 사본에서도 삭제




crontab 작동여부 확인


// crontab 로그 확인 

[root@localhost ~]# cat /var/log/cron 


// crontab 설정 확인

[root@localhost ~]# cat /var/spool/cron/root