시스템 백업과 응급 복구
시스템 백업의 중요성:외부의 침입자로부터 보호,예기치 못한 사고로부터의 복원, 시스템 백업은 매일 해야 한다.
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 설정 # default: off
rsync 서비스는 수퍼 데몬 xinetd에 의해서 동작한다.
/etc/xinetd.d/rsync 파일을 만들어 xinetd 데몬에 의해 읽어 지도록 설정.
# 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 / 를 이용해 수정하는 방법도 있다.