이 가이드는 Linux(및 대부분의 *nix 운영 체제)에서 자동화된 백업을 생성하는 프로세스를 단계별로 안내합니다.
“한 땀 한 땀이 아홉을 구한다”는 옛말이 있습니다. 컴퓨터 세계에서 우리는 그 스티치를 백업이라고 부릅니다. 프로덕션 IT 인프라를 실행할 때 서버와 애플리케이션의 가동 시간을 최대한 100%에 가깝게 달성하는 것이 필수적입니다. IT 인프라를 견고하게 만드는 방법은 여러 가지가 있지만 장애를 방지하는 것은 불가능합니다. 그래서 우리는 플랜 B를 세웁니다.
서버는 하드웨어, 운영 체제 및 응용 프로그램, 데이터의 세 가지 광범위한 계층으로 구성됩니다. 하드웨어 오류의 경우 기계를 새 것으로 교체하는 것이 오히려 간단합니다. 운영 체제와 응용 프로그램을 설치하는 것도 비교적 간단합니다. 교체하기 어려운 부분은 애플리케이션에서 사용하는 데이터와 구성입니다. 고장시 교체가 불가능한 부품입니다. 그래서 우리는 정기적으로 해당 데이터를 백업합니다. 비상시에 쉽게 검색할 수 있도록 백업합니다.
Linux 시스템에서 매일 자동화된 백업을 수행하는 스크립트를 작성하는 방법을 안내해 드리겠습니다. 이 연습에서는 Apache 웹 서버를 실행하는 서버, MySQL 데이터베이스 서버를 사용하고 /home에 디렉토리가 있습니다. 백업해야 하는 일부 데이터가 포함된 파티션. 또한 전날의 Apache 액세스 로그를 별도의 백업 디렉토리에 백업합니다. 먼저 백업이 상주할 디렉터리를 만들어야 합니다. 연습의 일환으로 BACKUP이라는 디렉토리를 만들었습니다. /opt에서 분할. 매일 백업이 /opt/BACKUP/YEAR/MONTH/DATE/와 같이 구성된 디렉토리에 있도록 이 디렉토리에 백업을 구성합니다. . 따라서 2008년 8월 11일에 백업이 /opt/BACKUP/2008/08/11/로 이동합니다. . 이 디렉토리를 만들어 봅시다. 루트로 다음 명령 세트를 실행합니다. 사용자.
# mkdir -p /opt/backup/DATA/2008
# cd /opt/backup/DATA/2008
# mkdir 01 02 03 04 05 06 07 08 09 10 11 12
# cd /opt/backup/DATA/
# cp -r 2008 2009
# cd /opt/backup/
# cp -r 데이터 로그
이 마지막 명령을 실행하기 전에 아래 참고 사항을 참조하십시오.
# chown -R calvin.calvin /opt/backup
이제 두 세트의 백업 디렉토리가 있습니다. 하나는 데이터용이고 다른 하나는 로그 파일용입니다. 백업 디렉토리가 생성되면 이제 스크립트 작성을 시작할 준비가 되었습니다. 참고: 사용자 calvin을 사용하고 있습니다. 이 기사 전체에서. calvin을 교체하세요. 자신의 사용자 이름으로.
######################################## ################
# 코드는 여기에서 시작됩니다.
######################## ################################
#!/bin/bash
# 서버 데이터 백업 V1.0
############################
# 백업 구성
############## ############
#월,일,일 설정
YEAR=`date +”%Y”` # 2008
MONTH=`date +”%m”`# 11
DAY=`date + ”%d”` # 14
YESTERDAY=`date –date=”어제” +%Y-%m-%d` # 2008-11-13
YESTERDAY_DATE=`date –date=어제 + %d` # 13
YESTERDAY_MONTH=`date –date=어제 +%m` # 11
YESTERDAY_YEAR=`date –date=어제 +%Y` # 2008
TODAY=`날짜 + %Y-%m-%d` # 2008-11-14
TODAY_DATE=`날짜 +%d` # 14
백업할 디렉토리 #개
DATA_BACKUP_PARENT_DIR=/opt/backup/DATA/ # <-- 데이터 백업 디렉토리 변경
LOG_BACKUP_PARENT_DIR=/opt/backup/LOG/ # <-- 로그 백업 디렉토리 변경
# 아파치 문서 루트 디렉토리
APACHE_DOCROOT=/var/www/html/
# MySQL 데이터베이스 구성
DB_IP=”localhost” # <-- 데이터베이스 서버의 IP로 변경
DB_USER=”calvin” # <-- 데이터베이스 사용자 이름으로 변경
DB_PASS=”calvin_password” # <-- 데이터베이스 비밀번호로 변경
DB_NAME=”clientlist” # <-- 데이터베이스 이름으로 변경
# Apache Log Dir
APACHE_LOG_DIR=”/var/log/httpd/” # <-- 로그의 경로 데이터로 변경
# 애플리케이션 파일의 디렉토리
APP_FILES=”/home/calvin/application_files/” # <-- 데이터 디렉토리의 경로로 변경
# Config Dir
CONFIG_DIR=”/etc/” # <-- 경로 데이터 디렉토리로 변경
# 메일 보고서 주소
EMAIL_ID=”[email protected]” # <-- 이메일 ID로 변경
#################################################### ###
# 데이터 백업
#################################### ##################
# 백업 디렉토리 생성 후 이동
cd $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH
mkdir $DAY
cd $DAY
# 데이터베이스 백업
mysqldump -h ${DB_IP} -u ${DB_USER} -p${DB_PASS} ${DB_NAME}> ${DB_NAME}.db
tar -zcvf ${DB_NAME}.tar .gz ${DB_NAME}.db
rm -f ${DB_NAME}.db
# /etc 백업
tar -zcf etc.tar.gz /etc
# 애플리케이션 백업
tar -zcf Apache_Doc_Root.tar.gz ${APACHE_DOCROOT}
tar -zcf App_Files.tar.gz ${APP_FILES}
#################################################### ###
# 로그 백업
################################### ##################
# 백업 디렉토리 생성 후 이동
cd $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH
mkdir $YESTERDAY_DATE
cd $YESTERDAY_DATE
# HTTPD 로그 백업
in ${APACHE_LOG_DIR}/access_log.${YESTERDAY}*; cp $i .; 완료
in access_log.${YESTERDAY}*; gzip $i를 수행하십시오. 완료
#################################################### ###
# 메일 알림 보내기
################################## ####################
# 메일 알림
du -shc $DATA_BACKUP_PARENT_DIR/$YEAR/$MONTH/$DAY/* | mail -s "${HOSTNAME}::DATA에 대한 백업 완료 :)" ${EMAIL_ID}
du -shc $LOG_BACKUP_PARENT_DIR/$YESTERDAY_YEAR/$YESTERDAY_MONTH/$YESTERDAY_DATE/* | mail -s "${HOSTNAME}::LOG에 대한 백업 완료 :)" ${EMAIL_ID}
#################################################### ###
# 코드는 여기에서 끝납니다
#################################### ###################
이 스크립트를 /home/calvin/scripts/backup.sh와 같은 디렉토리에 저장합니다. 파일에 실행 권한 부여:
# chmod +x /home/calvin/scripts/backup.sh
이제 가도 됩니다. 명령줄에서 스크립트를 실행합니다.
# /home/calvin/scripts/backup.sh
선택적으로 이 스크립트를 cron 작업으로 추가하여 선택한 시간에 매일 실행되도록 할 수도 있습니다. 매일 오전 4시에 이 스크립트를 실행하려면 다음을 수행하십시오.
# 크론탭 -e
열리는 파일에 새 줄을 만들고 다음을 추가합니다.
0 4 * * * /home/calvin/scripts/backup.sh> /dev/null
가세요. 이제 서버에서 데이터, 데이터베이스, 구성 파일, 애플리케이션 파일 및 로그 파일을 /opt/backup에 백업합니다. 매일 오전 4시에 – 완전히 자동화된 Linux 백업! 다음 단계는 암호화하는 것입니다. :)