CentOS 7 백업 및 복구

2016.08.18 19:40

gooddew 조회:1568

백업 또는 복구를 하려면 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


===============================================================================