DB 및 계정별 파일 백업 스크립트
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