본문 바로가기

개발/자작나스구축(Linux)

[우분투 12.04 LTS] 개인웹하드 구축 #22- 자동백업 스크립트 만들기

- 자동백업은 crontab에 일정을 등록해놓고 일정 주기에 맞춰서 데이터를 백업하는 기능입니다


여기서는 보안에 필요한 기본적인 쉘스크립트에 대해서 설명하며 /etc/ 와 /var/www 그리고 /home/ 을 7일단위로 백업하는 스크립트를 바로 사용할 수 있도록 포함합니다

1) 백업 폴더 지정

## 백업할 디렉토리
WEB_DIR=/var/www
HOME_DIR=/home
ETC_DIR=/etc

2) 백업 파일이 저장될 폴더 지정

# 백업파일 저장 경로
DB_BACKUP_DIR=DB파일이 백업될 경로
WEB_BACKUP_DIR= /var/www 파일이 백업될 경로
HOME_BACKUP_DIR= /home 파일이 백업될 경로
ETC_BACKUP_DIR= /etc/ 파일이 백업될 경로

3) 백업

##### 파일 백업  #####
echo "[info] /var/www Backup Start."
tar czfp $WEB_BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR
echo "[info] /var/www Backup End."

4) 이전에 백업했던 데이터 삭제

##### 오래된 백업 삭제  #####
echo "[info] Old Backup File Delete..."
WEEKAGO=`date -d "7 days ago" +%Y%m%d`
rm $DB_BACKUP_DIR/*$WEEKAGO.sql
rm $WEB_BACKUP_DIR/*$WEEKAGO.tar.gz
rm $HOME_BACKUP_DIR/*$WEEKAGO.tar.gz
rm $ETC_BACKUP_DIR/*$WEEKAGO.tar.gz

5) MySQL 전체 DB백업

##### MySQL 전체 데이타베이스 백업 #####
echo "[info] DB Backup Start."
mysqldump -u아이디 -p비밀번호 -A > $DB_BACKUP_DIR/all_$DATE.sql
echo "[info] DB Backup End."

6) 완료(최종)

#!/bin/bash
DATE=`date +%Y%m%d`

# 백업파일 저장 경로
DB_BACKUP_DIR=DB파일이 백업될 경로
WEB_BACKUP_DIR= /var/www 파일이 백업될 경로
HOME_BACKUP_DIR= /home 파일이 백업될 경로
ETC_BACKUP_DIR= /etc/ 파일이 백업될 경로

## 백업할 디렉토리
WEB_DIR=/var/www
HOME_DIR=/home
ETC_DIR=/etc


##### 파일 백업  #####
echo "[info] /var/www Backup Start."
tar czfp $WEB_BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR
echo "[info] /var/www Backup End."

echo "[info] /home Backup Start."
tar czfp $HOME_BACKUP_DIR/home_file_$DATE.tar.gz
echo "[info] /home Backup End."

echo "[info] /etc/ Backup Start."
tar czfp $ETC_BACKUP_DIR/etc_$DATE.tar.gz $ETC_DIR
echo "[info] /etc/ Backup End."

##### MySQL 전체 데이타베이스 백업 #####
echo "[info] DB Backup Start."
mysqldump -u아이디 -p비밀번호 -A > $DB_BACKUP_DIR/all_$DATE.sql
echo "[info] DB Backup End."

##### 오래된 백업 삭제  #####
echo "[info] Old Backup File Delete..."
WEEKAGO=`date -d "7 days ago" +%Y%m%d`
rm $DB_BACKUP_DIR/*$WEEKAGO.sql
rm $WEB_BACKUP_DIR/*$WEEKAGO.tar.gz
rm $HOME_BACKUP_DIR/*$WEEKAGO.tar.gz
rm $ETC_BACKUP_DIR/*$WEEKAGO.tar.gz

echo "[info] --- complete ---"
echo "[info] --- System Shutdown ---"

특정 경로는 백업에서 제외하고 싶을경우?
–exclude=백업 제외할 경로 –exclude=백업 제외할 경로 …
위처럼 넣어주면 된다

따로 설명은 하지 않겠습니다. 실제로 사용중인 스크립트기 때문에 분석해서 자기것으로 만들어보세요^^