백업 또는 복구를 하려면 root 권한으로 하시기 바랍니다.
홈페이지를 백업하려면 보통은 두가지를 백업해야 됩니다.
한가지는 데이타 이고, 두번째는 DB 입니다.
1. 백업하기
(1) TAR 이용한 데이타 전체 백업
# tar cvfpz /backup/www/home_bak.tar.gz /var/www/html
/var/www/html 이 경로는 백업할 폴더명입니다.
/backup/www/home_bak.tar.gz 는 백업 파일 입니다.
홈페이지 데이타 용량이 적으면 상관 없지만 용량이 많으면 작업이 오래 걸리는 단점이 있습니다.
(2) rsync 이용한 데이타 차등 백업
차등백업이란 이전의 전체 백업한 데이터 기반으로 변경된 데이터만 추가해서 백업을 만듭니다.
# rsync -avp --delete /var/www/html/ /backup/www/home_bak
홈페이지 데이타 용량이 많을때 빠르게 백업할수 있는 장점이 있습니다.
(3) DB 전체 백업
# mysqldump -u[DB아아디] -p [DB명] > [백업파일명]
DB 패스워드를 넣으면 작업이 진행됩니다.
DB 백업은 전체 백업을 기본으로 합니다.
2. 복구하기
(1) TAR 이용한 데이타 전체 복구
# tar -xvf home_bak.tar.gz -C /
home_bak.tar.gz 은 압축파일 이름이며 -C 옵션 뒤에는 압축이 풀리는 경로를 입력합니다.
(2) rsync 를 이용해서 백업한 자료는 cp 명령어로 복구하면 됩니다.
# cp /backup/www/home_bak /var/www/html/ -rf
(3) DB 복구
# mysql -u[DB아아디] -p [DB명] < [DB백업파일명]
DB 비밀번호 입력
백업을 자동화 하는 CRON(크론) 설정을 알아 보겠습니다.
실행 스크립트 만듭니다.
# nano /root/backup.sh
간단한 전체 백업하는 스크립트입니다.
========= backup.sh =================================================
rsync -avp /var/www/html/ /backup/www/home_bak
=================================================================
실행 가능한 파일로 만듭니다
# chmod 100 /root/backup.sh
크롬에서 스캐줄에 따라서 자동 백업을 실행하게 합니다.
# crontab -e
0 3 * * * /root/backup.sh
위 내용을 설명하면 매일 3시 00 분에 /root/backup.sh 를 자동 실행합니다.
백업 역시 부하가 걸리기 때문에 보통은 새벽에 실행 하는것을 권장 합니다.
많이 사용하는 backup.sh 스크립트 예제를 올리겠습니다.
(1) 데이터는 차등 백업을 하고 db 는 전체 백업을 하며 3일간 백업 파일을 유지 하는 스크립트 입니다.
========= /root/backup.sh ======================================================
#!/bin/sh
DATE=`date +"%Y%m%d"`
YES_DATE=`date --date '1 days ago' +"%Y%m%d"`
PREV_DATE=`date --date '3 days ago' +"%Y%m%d"`
/usr/bin/mysqldump -uroot -pDB비밀번호 DB명 > /backup/mysql/mysql_db_bak_${DATE}.sql
rm -rf /backup/mysql/mysql_db_bak_${PREV_DATE}.sql
cp -rf /backup/www/home_bak /backup/www/home_bak_${YES_DATE}
rsync -avp --delete /var/www/html/ /backup/www/home_bak
rm -rf /backup/www/home_bak_${PREV_DATE}
===========================================================================
② 데이터와 db 모두 전체 백업을 하고 3일간 백업 파일을 유지 하는 스크립트 입니다.
========= backup.sh ==========================================================
#!/bin/sh
DATE=`date +"%Y%m%d"`
YES_DATE=`date --date '1 days ago' +"%Y%m%d"`
PREV_DATE=`date --date '3 days ago' +"%Y%m%d"`
DOW='date + "%a"'
/usr/bin/mysqldump -uroot -pDB비밀번호 DB명 > /backup/mysql/mysql_db_bak_${DATE}.sql
rm -rf /backup/mysql/mysql_db_bak_${PREV_DATE}.sql
tar cvfpz /backup/www/home_bak_${DATE}.tar.gz /var/www/html
rm -rf /backup/www/home_bak_${PREV_DATE}.tar.gz
==========================================================================