Skip to content

시스템 백업과 응급 복구

조회 수 61864 추천 수 0 2009.05.11 11:20:49

시스템 백업과 응급 복구

시스템 백업의 중요성:외부의 침입자로부터 보호,예기치 못한 사고로부터의 복원, 시스템 백업은 매일 해야 한다.

 

 

1. 백업(backup) 종류
1) 완전 백업(Full backup)
2) 증분 백업(Incremental Baxkup) - 부분 백업
3) 차등 백업(Differential Backup)  
- 전체 백업후의 모든 것을 백업하는것

 

 

 

2. 백업 정책과 백업 시간
백업 매체 : 하드 디스크, CD-RW, DVD-RW
백업 시간 :이용자가 적은 새벽 시간대  (cron이나 at 데몬을 이용)에 한다.

  

 

3. 백업 매체 선택
비용보다는 매체의 신뢰성을 더 따져야 할 것이다. 테이프는 장비가 비싸고 저장 매체는 저가이나

일반인이 사용하기엔 너무 비용부담이 크다.

  

 

4. tar를 이용한 로컬 데이터 백업
1) tar의 증분 백업  (--listed-invremental (-g)옵션)
# mkdir /backup
# mkdir /backup/home
# mkdir /backup/home/fedora

# cd /home/fedora
# touch test1 test2 test3
# tar cpfz /backup/Full-backup.tar.gz --listed-incremental /backup/backuplist /home/fedora

# touch /home/fedora/test4
# tar cpfz /backup/Incremental1.tar.gz --listed-incremental /backup/backuplist /home/fedora

# touch /home/fedora/test5
# tar cpfz /backup/Incremental2.tar.gz --listed-incremental /backup/backuplist /home/fedora

# rm -f /home/fedora/test5
# tar cpfz /backup/Incremental3.tar.gz --listed-incremental /bckup/backuplist /home/fedora

# ls -l /backup

 

 


2) 증분 백업 복원
# cd /backup
# tar xvzf Full-backup.tar.gz
# ls home/fedora

# tar xvzf Incremental1.tar.gz -g ./backuplist
# ls home/fedora

# tar svzf Incremental2.tar.gz -g ./backuplist
# ls home/fedora

# tar xvzf Incremental3.tar.gz -g ./backuplist
# ls home/fedora
# ls /home/fedora

 

 

 

3) tar를 이용한 특정 디렉토리 데이터 자동 백업
자동화 작업은 백업할 때 많은 도움을 주는데, 아래에서는 자동으로 백업하기 위해서 backup.cron이라
는 스크립트를 예로들어 설명하고 있다. 이 백업 스크립트는 몇 가지 변수(COMPUTER,
DIRECTORIES, BACKUPDIR 그리고 TIMEDIR)만 변경해 주면 어떠한 환경에서도 사용할 수 있다. 이
스크립트를 이용해 첫 달 초에 실행하고 주된 변경이 있기 전에 한 달 동안 실행한다. 이 예제에서는
로컬 서버의(BACKUPDIR) 디렉토리로 백업을 하는데 물론 이 스크립트를 수정하여 로컬 서버에 있는
테이프나 nfs를 통한 백업도 할 수 있다.

1단계
'touch /etc/cron.daily/backup.cron'로 /etc/cron.daily/ 디렉토리에 backup.cron 파일을 생성하고 아래의
내용을 추가한다.

#!/bin/bash
#
# 각자의 환경에 맞도록 아래5개의 변수를 수정한다.
COMPUTER=deep                                                # 이 컴퓨터의 이름
DIRECTORIES="/home                                          # 백업할 디렉토리
BACKUPDIR=/backups                                          # 백업을 저장할 위치
TIMEDIR=/backups/last-full                                   # 풀 백업한 시각을 저장할 파일
TAR=/bin/tar                                                        # tar 명령의 위치

# 아래는 전혀 변경할 필요가 없다.
PATH=/usr/local/bin:/usr/bin:/bin
DOW=`date +%a`                                                    #일주일 중의 요일. 예를 들면 Mon
DOM=`date + %d`                                                   #한 달(31일) 중의 날짜. 예를 들면 27
DM=`date +%d%b`                                                  #날짜와 달. 예를 들면 27Sep

# 한 달의 첫날(1일)에 영원한 풀 백업이 진행된다.
# 매 일요일에는 지난 일요일의 백업을 덮어쓰는 풀 백업이 진행된다.
# 나머지 시간에는 증가분 백업이 진행되는데, 각각의 증가분 백업은 같은 이름으로 일주일 전의 증가분 백업을 덮어쓴다.
#
# 만약 NEWER = ""일 경우 tar는 디렉토리에 있는 모든 파일을 백업하고
# NEWER의 날짜는 매주 일요일에 쓰여지는 파일에서 읽어온다.
#
# 매달 풀 백업
if( $DOM = "01" ]; then
          NEWER=""
          $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DM.tar $DIRECTORIES
fi

#매주별 풀 백업
if [ $DOW = "Sun" ]; then
           NEWER="
           NOW=`date +%d-%b`
           #풀 백업 날짜를 갱신한다.
           echo $NOW > $TIMEDIR/$COMPUTER-full-date
           $TAR $NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
#증가분 백업을 한다.지난 주의 데이터를 덮어쓴다.
else
           #지난 풀백업의 날짜를 가져온다.
           NEWER="--newer `cat $TIMEDIR/$COMPUTER-full-date`"
           $TAR$NEWER -cf $BACKUPDIR/$COMPUTER-$DOW.tar $DIRECTORIES
fi

주의) 백업하기 전에 백업을 저장할 디렉토리인(BACKUPDIR)의 풀 백업한 시간을 저장한 파일
(TIMEDIR)은 이 백업 스크립트를 실행하기 전에 미리 생성해야 한다. 그렇지 않다면 오류 메시지가 나타날 것이다.

 

2단계
매 달의 처음(01-month-year)에 이 백업 스크립트를 실행하지 않는다면 증가분 백업을 제대로 실행
하기 위해 일요일에 백업되었음을 나타내는 파일이 필요하다. 한 주의 중반 정도에 백업을 시작한다면
TIMEDIR에 시간을 나타내는 파일을 생성할 필요가 있다.

    - TIMEDIR 디렉토리에 시간을 나타내는 파일을 생성하려면 아래와 같은 명령을 입력한다.

#date +%d%b > /backups/last-full/myserver-full-date

'/backups/last-full'은 TIMEDIR 변수로서 풀 백업을 한 시간을 저장하는 것이고 'myserver-full-date'
은 서버의 이름이다(이를테면 deep등). 그리고 시간을 나타내는 파일은 15-Feb와 같이 한 줄로 되어있다.

3단계
이 스크립트를 실행이 가능하고 관리자인 root만 읽고 실행할 수 있도록 실행권한을 변경한다.

#chmod 700 /etc/cron.daily/backup.cron

주의) 이 스크립트 파일은 /etc/cron.daily 디렉토리에 있으므로 cron에 의해 매일 오전 1시에 자동으로 실행된다.

 

 

4) tar를 이용한 로컬 데이터 미러링하기
형식 : tar cpf - --directory=백업할경로 | (cd /mnt/hdb4; tar xpf -)

# mkdir /data/fedora
# ls -l /home/fedora

# tar cpf - --derectory=/home/fedora | (cd /data/fedora; tar xpf -)
# ls -l /data/fedora

 

 

5) tar를 이용한 리눅스 운영체제 백업
운영체제를 백업하기 위해서 /proc, /mnt, /media, tmp 디렉토리는 포함하지 않아도 된다.(--exclude)

# tar cpvfz /backup/Fedora-Core4-bk.tar.gz --exclude=/proc --exclude=/tmp

             --exclude=/media --exclude=/backup --absolute-name /                --->(한줄에 작성)


 

 

 

 

5. Rsync를 이용한 로컬 데이터 백업 및 서버 동기화
1) 미러링(Mirroring)
리눅스 배포판의 미러링 사이트,사이트 동기화,로컬 시스템의 데이터 백업

 

 

 

2) rsync
분산 서버 데이터 동기화, SSH를 이용한 미러링

 

 

3) rsync 설치
# rpm -q rsync
# yum list installed rsync 또는 # apt-get install rsync 를 이용하여 설치

 

 

4) SSH를 이용한 원격 서버 데이터 미러링
형식 : rsync -avzr --delete -e ssh 원격서버:데이터경로 백업경로

# mkdir /data4/Fedora-Nirror
# rsync -avzr --delete -e ssh 192.168.0.1:/data/fedora /data4/Fedora-Mirror/

>> ssh를 이용한 rsync데이터 동기화를 위해서는 서버에 ssh서버가 작동 하고 있어야 한다.

 

 

5) rsync 서버 설정(/etc/rsyncd.conf)
>> 사용자가 직접 /etc/rsyncd.conf파일을 만듬.
# cat > /etc/rsyncd.conf

[Fdora-Core6]
comment=Fdora Core6 Linux
path=/var/ftp/pub/Mirror/Fedora
uid=nobody
gid=nobody
use chroot=yes
read>host allow=192.168.0.4
max connections=5
timeout=60

 

6) /etc/xinetd.d/rsync 설정
rsync 서비스는 수퍼 데몬 xinetd에 의해서 동작한다.
/etc/xinetd.d/rsync 파일을 만들어 xinetd 데몬에 의해 읽어 지도록 설정.

 

# default: off
# description: The rsync server is a good addirion to an ftp server, as it ?
#           allows crc checksumming etc.
service rsync
{
          disable = no
          sicket_type = stream
          wait = no
          user = root
          server = /usr/bin/rsync
          server_args = --deamon
          log_on_failure += USERID
}
~
-- insert --

 

 

# /etc/init.d/xinetd restart
>> rsync 데몬은 독립 모드(standalone)으로 동작하질 않기 때문에 ps ax 명령으로느 이 데몬이 동작하고 있는지를 확일할 수 없다.

(tcp873번 포트로 텔넷 접속을 시도하여 연결 확인 /etc/sysconfig/iptables에서 수정)

# telnet localhost 873

 

 

7) rsync 사용법
형식: rsync [옵션] rsync서버주소::서비스명 미러경로
>> rsync 서비스 모듈(서비스명과 설명) 알아보기

형식: rsync 서버주소::
# rsync 192.168.0.1::
>> 로컬 시스템 데이터 백업

형식: rsync -avzr --delete 백업소스경로 백업될경로
# mkdir /rsync-src /rsync-mirror
# cd /rsync-src
# touch test1 test2 test3 test4 test5
# rsync -avzr /rsync-src/ /ysync-mirror/
# ls -l /rsync-mirror/
# rm -f test3 test4
# rsync -avzr --delete /rsyc-src/ /rsync-mirror/
# ls -l /rsync-mirror/

>> 원격 서버의 데이터 미러링
형식: rsync-avz 서버주소::모듈명(서비스명) 백업될경로

 

 

 

 

6. CD-RW/DVD-RW를 이용한 하드 디스크 백업
1) CD/DVD 레코딩 도구 설치
# yum list installed mkisofs 또는 # yum install mkisofs
# yum install cdrecord
# yum install dvd+tw-tools
# yum install k3b
# yum install xcdroast

 

 

 

2) 로컬 데이터 백업 ISO 파일 만들기
mkisofs 도구로 ISO이미지 파일 만들기
형식: mkiso -r -J -input-charset UTF-8 -o /디렉토리/이미지파일명.iso /백업데이터경로
# mkisofs -r -J -input-charset UTF-8 -o /tmp/homebackup.iso /home/

 

 

 

3) ISO 이미지 파일 레코딩 하기
>> cdrecord로 iso이미지 파일 CD굽기
형식: cdrecord -v speed=배속 -dao driveropts=burnfree -eject dev-디바이스명 -data 이미지명
# cdrecord -v speed=40 -dao driveropts=burnfree -eject dev=/dev/hdc -data /tmp/homebackup.iso

>> growisofs로 iso이미지 DVD로 굽기
형식: growisofs -Z DVD-R/RW디바이스명 iso파일명 -use-the-force-luke=notray \-use-the-force-luke=tty -speed=배속
# growisofs -Z /dev.hdc /tmp/homebackup.iso -use-the-force-luke=notray \-use-the=force-luke=tty -speed=4

>> CD-RW 미디어 포맷
형식: cdrecord -v speed=배속 dev=디바이스명 blank=all or blank=fast

>>DVD-R/+R/RW 미디어 포맷
형식: dvd+rw-format -force 디바이스명

 

 

4) 그래픽 레코딩 프로그램으로 레코딩하기
엑스윈도우용 CD레코더 : K3B, X-CD-Roast, 노틸러스, Burn-it, KOnCD, gcombust
# yum install k3b

 

 

 

7. 시스템 응급 복구
1) 시스템 장애 일으키기
/etc/fstab 파일의 내용중 한곳을 임으로 틀리게 수정한다.

 

2) 시스템 응급 복구
설치 cd를 입력하고 GRUB 상태에서 boot: linux rescue 입력후 진행

 

3) 수동 응급 복구
rescue창에서 skip버튼을 눌러 실행.
>> mount -o remount,rw / 를 이용해 수정하는 방법도 있다.

profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/1637/ad3/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
47 데몬 및 프로세스 관리 ADMINPLAY 2009-05-11 17331
» 시스템 백업과 응급 복구 ADMINPLAY 2009-05-11 61864
45 Ascii Art관련 사이트 링크 ADMINPLAY 2009-05-11 17290
44 퍼미션 설정 ADMINPLAY 2009-05-11 17609
43 Linux 파일 오픈 갯수 확인 ADMINPLAY 2009-05-10 23422
42 Centos5 버전에서 메모리 인식 file ADMINPLAY 2009-05-10 21100
41 MRTG 로그 데이터 시간확인하기 ADMINPLAY 2009-05-08 22180
40 리눅스 java tocmat 설치 ADMINPLAY 2009-05-07 18984
39 ssh, ftp 접근 딜레이 현상 발생시 조치방법 ADMINPLAY 2009-04-27 20094
38 관리, 개발자를 위한 vi 환경 설정 ( vim-enhanced) ADMINPLAY 2009-04-27 19000
37 time.bora.net 시간 동기화후 dovecot 데몬이 죽는 현상 해결 ADMINPLAY 2009-04-27 23934
36 리눅스 페도라 인터넷잡는것좀 알켜주세요^^; [1] 시풍 2009-04-07 20706
35 .vimrc 설정 설정, 색상 (VI 설정 색상) ADMINPLAY 2009-03-21 26238
34 사이트 이전시 - rsync ADMINPLAY 2009-03-17 17418
33 dumpe2fs 파일 시스템의 슈퍼 블럭과 블럭 그룹 정보를 출력 ADMINPLAY 2009-03-17 20736
32 rm -rf / ==> 그 결과는...ㄷㄷ;; ADMINPLAY 2009-03-17 20146
31 Cent5 ffmpeg 설치 ADMINPLAY 2009-03-17 18041
30 리눅스 TIP ADMINPLAY 2009-03-09 25562
29 특정 디랙토리 인증걸기 htpasswd, htaccess ADMINPLAY 2009-03-04 22031
28 netstat 의 Send-Q, Recv-Q의 의미 ADMINPLAY 2009-02-09 25021

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234