#!/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
Posted by Narusika
,