강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

8. 일자별로 일별 로컬백업하는 간단한 쉘프로그램

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

8. 일자별로 일별 로컬백업하는 간단한 쉘프로그램

 

다음은 리눅스 서버에서 주로 하는 로컬백업을 일자별로 구분하여 계속저장하는 예를 보도록 하겠습니다. 백업하고자 하는 시스템상황은 다음과 같습니다.


.
백업스크립트명 : dailybackup.sh

. 백업저장 디렉토리 : /backup
.
백업대상 : APACHE, MYSQL, /home디렉토리, /etc디렉토리, /var디렉토리
.
백업주기 : 일별백업
.
백업방식 : cron에 의해 일자별로 백업 누적저장되도록 백업함.

 

, 그럼 먼저 백업스크립트를 작성해 보겠습니다. 아래 스트립트의 파일명은 dailybackup.sh입니다. 그리고 이 스크립트파일에는 반드시 실행퍼미션이 있어야 합니다.

#!/bin/bash

 

export Today="`date '+%y-%m-%d'`"

 

rm -f *.tar.gz

 

cd /backup/

 

tar cvfpz $Today-usr.local.apache2.tar.gz /usr/local/apache2/

tar cvfpz $Today-usr.local.mysql.tar.gz /usr/local/mysql/

tar cvfpz $Today-etc.tar.gz /etc/

tar cvfpz $Today-home.tar.gz /home/

tar cvfpz $Today-var.tar.gz /var/

 

그리고 다음과 같이 root crontab에 매일 주기적으로 실행되도록 등록을 합니다.

[root@bible ~]# crontab -e

 

00 01 * * * su - root -c '/root/dailybackup.sh' >& /dev/null

~

~

~

 

, 위와 같이 root crontab에 등록해 두시면 매일 새벽 01시에 /root/dailybackup.sh 쉘스트립트가 자동실행되어 일별 백업된 결과를 /backup디렉토리에 저장하게 될 것입니다. , 그럼 이제 이틀동안의 백업된 결과를 보도록 하겠습니다.

 

먼저 첫째날의 /backup디렉토리내에 있는 백업결과를 확인한 것입니다.

[root@bible ~]# date

Tue Feb  1 01:01:02 KST 2005

[root@bible ~]#

[root@bible ~]# ls -l /backup

total 46820

-rw-r--r--  1 root root  7757123 Feb  1 01:0205-02-01-etc.tar.gz

-rw-r--r--  1 root root  4173734 Feb  1 01:0205-02-01-home.tar.gz

-rw-r--r--  1 root root  8728534 Feb  1 01:0105-02-01-usr.local.apache2.tar.gz

-rw-r--r--  1 root root  8651588 Feb  1 01:0205-02-01-usr.local.mysql.tar.gz

-rw-r--r--  1 root root 18533765 Feb  1 01:0305-02-01-var.tar.gz

[root@bible ~]#

 

위의 결과를 보시다시피 백업된 파일들 앞에 백업날짜가 지정되어 있으므로 언제 백업된 파일인가를 정확하게 있습니다.

 

그리고 이번에는 이틀째 백업된 내용을 /backup디렉토리에서 확인한 것입니다.

[root@bible ~]# date

Wed Feb  2 01:01:02 KST 2005

[root@bible ~]#

 

[root@bible ~]# ls -l /backup/

total 93640

-rw-r--r--  1 root root  7757123 Feb  1 01:0205-02-01-etc.tar.gz

-rw-r--r--  1 root root  4173734 Feb  1 01:0205-02-01-home.tar.gz

-rw-r--r--  1 root root  8728534 Feb  1 01:0105-02-01-usr.local.apache2.tar.gz

-rw-r--r--  1 root root  8651588 Feb  1 01:0205-02-01-usr.local.mysql.tar.gz

-rw-r--r--  1 root root 18533765 Feb  1 01:0305-02-01-var.tar.gz

-rw-r--r--  1 root root  7757085 Feb  2 01:0205-02-02-etc.tar.gz

-rw-r--r--  1 root root  4173734 Feb  2 01:0205-02-02-home.tar.gz

-rw-r--r--  1 root root  8728534 Feb  2 01:0105-02-02-usr.local.apache2.tar.gz

-rw-r--r--  1 root root  8651588 Feb  2 01:0105-02-02-usr.local.mysql.tar.gz

-rw-r--r--  1 root root 18533779 Feb  2 01:0305-02-02-var.tar.gz

[root@bible ~]#

 

위의 결과를 보시면 이틀동안 백업된 결과가 일자별로 저장되어 있습니다. 이와 같은 방법으로 백업을 하게 되면 언제 백업된 파일인가를 정확하게 있기 때문에 복구할 때에 굉장히 편리합니다.


쉘프로그램을 다음과 같이 업그레이드 해보시기 바랍니다. 이렇게 계속 일별백업되면 언젠가는 디스크용량이 꽉차게 되어 문제가 있습니다. 따라서 7일동안(또는 30) 누적백업되도록 하기 위하여 7일이전의 백업데이터를 자동으로 계속 삭제하는 기능을 추가해 보십시요. , 7일간 계속 누적해서 저장하도록 하는 기능을 쉘프로그램을 참고하여 추가해 보시기 바랍니다 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,785 개
  • 현재 접속자 :  264 명