본문 바로가기
운영체제 (LNX,WIN)

리눅스(Linux) 시스템 및 데이타 백업(Data Backup)

by 날으는물고기 2008. 10. 27.

리눅스(Linux) 시스템 및 데이타 백업(Data Backup)

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

 

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 /backup/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 only=yes

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 / 를 이용해 수정하는 방법도 있다.

728x90

댓글