#!/bin/bash
# Backup Variables
backupDate=$(date +%Y%m%d) || echo "Error : Not init variable(backupDate)"
backupDir=/backup/ || echo "Error : Not init variable(backupDir)"
# Make backup directory
mkdir "${backupDir}${backupDate}" || echo "Error : Not created sub directory"
# Start log
echo "System backup start - $(date +%Y-%m-%d) $(date +%H:%M:%S)"
# File system Backup
tar cvpzf "${backupDir}${backupDate}"/system_"${backupDate}".tar.gz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=/backup / || echo "Error : System backup failed."
echo "End system files backup - $(date +%Y-%m-%d) $(date +%H:%M:%S)"
# DB Backup
mysqldump -u[유저] -p[패스워드] [DB명] > "${backupDir}${backupDate}"/DB_"${backupDate}".sql || echo "Error : DB backup failed."
echo "End DB backup - $(date +%Y-%m-%d) $(date +%H:%M:%S)"
# End log
echo "End backup - ${backupDir}${backupDate}.tar.gz"
crontab
# 매월 30일 0시 1분에 정기 백업
1 0 30 * * /bin/sh /backup/backup.sh > /backup/backup.log
------------------------------------------------------------------------------------------------
Step 1. 백업 Shell Script 작성
백업 수행을 위해 아래와 같이 'backup.sh' 이란 이름의 간단한 백업 Script를 작성한다.
"date" 명령어를 사용하여 "[연월일_시분초]_cvs_backup.tar.gz"의 형식으로 백업한 시간을 prefix로 파일을 압축하여 백업하도록 하였다.
#!/bin/bash
# 백업을 수행 할 디렉터리
backup_source="/home/cvs"
# 백업을 할 압축 파일명
backup_filename=`date +"%Y%m%d_%H%M%S_cvs_backup.tar.gz"`
backup_filename="/backup/${backup_filename}"
# tar를 이용하여 백업을 수행
tar zcvf ${backup_filename} ${backup_source}
작성한 Shell Script에 실행 권한을 부여한다.
# chmod +x backup.sh
Step 2. crontab에 등록
위의 Step 1에서 작성한 Shell Script를 주기적으로 실행하기 위해서 Script를 crontab에 등록한다.
crontab에는 주기적으로 실행할 시간 정보, 실행 할 사용자 그리고 실행 할 명령어를 적어주면 된다.
시간 정보에 특정 숫자를 적어주면 해당되는 시간에 수행되고, "*"을 적어주면 해당 시간 항목의 모든 경우에 실행이 된다.
예를 들어 시간 정보 부분에 "30 * * * *" 라고 써주면 매 30분 마다 수행하게 된다.
crontab의 형식은 아래와 같다.
[minute] [hour] [day of month] [month] [day of week] [user] [command]
이번의 경우에는 오전 7시, 오후 12시, 오후 7시에 백업을 수행하도록 아래 내용을 "/etc/crontab"의 가장 아래 부분에 추가해 주었다.
# for cvs backup
0 7 * * * root /root/backup.sh
0 12 * * * root /root/backup.sh
0 19 * * * root /root/backup.sh
'공부중' 카테고리의 다른 글
primary와 extended 파티션 (0) | 2015.12.22 |
---|