Linux - Backup
먼저Backup이 무엇인지 알아보자.
Backup이란 서비스 운영중 발생할 수 있는 사고에 대비하기 위해
시스템에 저장되어있는
원본 데이터를 복사하는 것을 말 한다.
대표적인 Backup의 방법으로는 2가지로 구분 된다.
1. 전체 Backup : 매번 시스템 상에 존재하는 모든 데이터 전체를 Backup하는 방식으로
데이터에 대한 신뢰도는 높으나, Backup 소요시간이 길다.
2. 증분 Backup : 한번의 전체 Backup 후 이후에는 추가되는 데이터만 Backup하는 방식으로
데이터의 신뢰도는 전체 Backup보다 낮지만, Backup 소요시간이 적다.
3. 차등 Backup : 전체 Backup과 증분 Backup을 합쳐놓은 것 으로
처음에는 전체 Backup을 진행한 후에 그 다음부터는 추가되는 데이터만 백업을 하는데,
이것만 보면 증분Backup과 똑같다고 느낄 수 있지만
증분 Backup은 그날 그날 추가된 데이터만 Backup을 하고,
차등 Backup은 처음에 전체 Backup 후, 이후에 추가된 데이터들에 대해
하나의 Backup파일에 계속 추가한다.
아래 그림을 보고 확실하게 이해하고 넘어가자.
이러한 Backup System을 사용하는 이유는
운영 중인 시스템에 문제가 발생하여 클라이언트에게
정상적인 서비스를 제공 할 수 없을 경우
신속한 복구를 통해 클라이언트에게 지속적인 서비스를 제공해야 한다.
이러한 문제를 해결하기 위한 가장 신속하고 효과적인 방법으로는
Backup System에 저장 되어 있는 Backup 데이터를
가져와 실제 서비스를 운영중인 시스템에 복구 작업을
진행하는 것이 가장 좋은 방법이 된다.
위와 같은 이유로 Backup System은 지속적으로 운영 되어야하며,
전체 System의 안정성 및 효과적인 데이터 관리를 위한 필수 요소가 된다.
Backup 데이터는 주기적인 작업을 통한 항상 최신의 데이터를 유지하는 것이 중요하며,
실제 서비스를 운영하는 서버가 아닌 별도의 다른 저장 매체에 저장하는 것이 좋다.
백업을 하기 위한 명령도 다양하다.
하나하나 알아보자.
TAR
tar cvfzp [ BackupData 이름 ] [ Backup 옵션 ] [ Backup 대상 ]
c | tar 파일 생성 |
z | tar + gzip |
f | tar로 생성되는 데이터 형식이 파일인 것을 나타낸다. |
v | tar 작업 짂행 결과를 화면에 표시한다. |
p | tar로 묶이는 데이터에 대한 퍼미션을 보존한다는 의미가 된다. |
--exclude | 작업 대상에서 제외하고자 할 때 사용 |
[ 실제 명령어 사용 예시 ]
# cd /
# tar cvfzp /backup/backup.tar.gz --exclude=/var/cache /var
# ls –ld /backupdata.t
TAR을 이용한 Backup Data 복구
tar xvfzp [ BackupData 이름 ] [ -C 옵션 ] [ 압축해제 위치 ]
x | tar 파일 해제 |
-C | Tar로 묶인 데이터를 해제할 경로를 지정하는데 사용되는 옵션 |
[ 실제 명령어 사용 예시 ]
# tar xvfzp /backup/backup.tar.gz -C /home/itbank
# ls -l /home/itbank
※ 압축해제를 원하는 디렉터리를 마지막에 명시한다.
=============================================================
xfsdump
xfsdump는 자기테이프를 이용한 backup시 사용하는
명령으로, 잘 사용되지는 않는다.
xfsdump [ Option ] [ Backup File ] [ Backup 대상 ]
-l [ 0 ~ 9 ] | 0번은 젂체 Backup을 의미하며, 나머지 번호를 이용하여 증가 및 차등 Backup을 진행 |
-f | Backup File 위치 지정 옵션 |
-M | 장치 Label 설정 ( 설명 ) |
-L | Session Label 설정 ( 설명 ) |
[ 실제 명령어 사용 예시 ]
# xfsdump -L "Backup of /home" -M "Backup Media:/dev/st0" -l 0 -f /dev/st0 /home ( 1회차 )
# xfsdump -L "Backup of /home" -M "Backup Media:/dev/st0" -l 1 -f /dev/st0 /home ( 2회차 )
# xfsdump -I ( xfsdump 정보 확인 “/var/lib/xfsdump/inventory/” )
# ls -l /backup
※ “/dev/st0” 장치는 자기테이프의 기본 장치이름
xfsrestore를 이용한 Backup Data 복구
xfsrestore [ Option ] [ Backup File ] [ Backup Data 저장 할 대상 ]
-f | Backup File 위치 지정 옵션 |
-v | Silent, Verbose, Trace 등의 모드 선택 |
-r | 전체 복구 시 사용 |
[ 실제 명령어 사용 예시 ]
# mt -f rewind ( 자기 테이프의 상태를 최초 시작점으로 되감기 )
# mkdir /test
# xfsrestore -f /dev/st0 -r /test
※ -r 옵션을 생략 할 경우 최초 젂체 Backup관한 데이터맊 Restore를 짂행
※ -r 옵션을 함께 사용 할 경우 복원 작업을 누적하여 짂행하도록 설정 할 수 있다.
=============================================================
dd
dd if=[ 복제할 대상 디스크 이름 ] of=[ 복제 데이터를 저장 할 디스크 이름 ] bs=[ 작업 단위 ]
if | 입력 파일 |
of | 출력 파일 |
bs | 읽기, 쓰기 작업 단위 |
[ 실제 명령어 사용 예시 ]
# dd if=/dev/sda of=/dev/sdb bs=512
# fdisk -l /dev/sdb
Device Boot | Start End | Blocks Id System |
/dev/sdb1 * 2048 2099199 1048576 | 83 Linux | |
/dev/sdb2 2099200 | 83886079 | 40893440 8e Linux LVM |
※ /dev/sda HDD를 /dev/sdb HDD에 복제
=============================================================
TimeShift (Snapshot)
- 현재 System의 상태를 저장 할 수 있는 도구 Tool
- 직관적인 GUI 홖경이 제공되어 초보자도 쉽게
스케줄링과 Snapshot관리를 할 수 있다.
- TimeShift를 사용하기 위해서는 Package를 설치해야 하며,
기본 저장소에서는 제공 되지 않는다.
- Epel 저장소를 이용하여 설치해야 하므로, EPEL 저장소를 추가 후 TimeShift Package 설치를 짂행 한다.
# yum -y install epel-release
# yum -y install timeshift
# rpm -qa | grep timeshift
timeshift-18.4-1.el7.x86_64
설치가 완료되면 가상머신 바탕화면에서
좌측상단 - TimeShift 클릭
스냅샷 형식 - RSYNC
스냅샷 위치 선택 후, 스냅샷 레벨 선택
만들기.
복원
복원 클릭, 경로와 장치 선택 후 다음.
=============================================================
Rsync
- Remote Sync의 줄임말로써 원격지의 파일을 복사할 때 사용하는 명령어이다.
- 원격지로 데이터를 전달 할 수 있으며, 원격지의 데이터를 가져올 수도 있다.
- 다양한 옵션을 제공 ( 압축, Link 유지, 권한 유지, 날짜 정보 유지 등 )
- 원격지에 데이터를 주기적으로 전송 후 저장하는 작업에서 맋이 사용 된다.
- Rsync는 전송 할 파일이 이미 목적지에 존재하거나 시간 및 크기가 동일할 경우 복사를 건너뜀
- Rsync의 경우 반드시 데이터를 저장 할 경로에 대한 쓰기권한이 필요하다.
- SCP 명령어의 사용법과 동일하다.
[option]
-v | 작업 과정을 자세히 표시 ( Verbosity ) |
-z | 파일 복사 시 압축을 진행 ( Compress ) |
-a | Archive 모드로 복사를 진행 ( 복사되는 데이터의 기존 정보를 젂부 유지하며 복사를 진행 ) |
-I | 크기와 시간정보가 일치하는 파일또한 복사대상으로 설정 ( 기존 파일에 덮어쓰기 짂행 ) |
-h | 파일 복사 결과 출력 |
Rsync를 이용한 Data 전송
ex)
우리에게는 메인서버와 보조서버가 있다.
여기서는 각각 100과 150이라고 표현한다.
현재 우리의 위치는 100이며 보조서버 150에서 /backup을 생성한 상태이다.
100서버에서
# mkdir /test
# touch /test/A /test/B /test/C
이렇게 A,B,C 세개의 파일을 생성한 후에
# rsync -avzh /test root@192.168.1.150:/backup
100의 /test 디렉터리의 파일들을 150의 /backup 디렉터리로 전송한다.
150서버로 와서
# ls -lR /backup 로 확인하면
파일을 전송받은 것을 확인할 수 있다.
다시 100서버
같은 위치에
# touch /test/D /test/E
D,E 파일을 새로 만든 후에 같은 작업을 해준다.
# rsync -avzh /test root@192.168.1.150:/backup
150서버로 와서
# ls -lR /backup 로 확인하면
기존의 데이터는 전송하지 않고 새로 만들어진,
이전에는 없었던 파일 D,E만 추가로 전송된 것을 알 수 있다.
※ 대문자 “I” 옵션을 사용 할 경우 기존 데이터를 포함한 전체 데이터 전송 ( 덮어쓰기 짂행 )
Rsync를 이용한 Data 가져오기
100 서버에서
# rsync -avzh root@192.168.1.150:/backup/test /backup
150서버의 /backup/test의 파일을
내 100서버의 /backup으로 가져온다.
# ls -lR /backup
원격지로부터 데이터를 전송받은 것을 확인할 수 있다.
여기까지 Backup에 대한 설명이 끝났다.