Linux

시스템 백업

laughcryrepeat 2020. 9. 19. 01:20

백업의 개요

 

1) 백업의 필요성

 

1. 비지니스 연속성

서비스 장애가 발생하더라도 복구하여 업무를 연속적으로 수행하는 것이 가능하려면 체계적 백업 전략 및 시스템 구축이 필수적

 

2. 데이터의 중요성

중요 정보를 유실하였을 경우 복구하는 과정까지 많은 노력과 시간이 필요.

가격을 매길수 없는 중요 데이터 유실사고도 존재.

 

3. 시스템의 장애 발생 위험

사용자실수, 관리자 실수, 하드웨어의 오류, 프로그램 오류, 해커공격, 도난, 자연재해 등

 

2) 백업 전략의 요건

  • 데이터 손실 요인으로부터 복구가 가능해야함
  • 장애가 발생하기 이전 정상적으로 동작하던 상태로 복구가 가능해야 함.
  • 최소한의 노력, 비용 데이터 손실만을 허용하는 백업전략
  • 초기 백업 구축이후 자동화된 백업 시스템 이어야 함.

 

3) 백업 전략 수립 시 고려사항

  1. 무엇을 백업할 것인가?
    백업 대상에 따라 전략의 방향이 달라짐.
    백업 데이터가 일반 문서인지 유틸리티인지 식별해야 함
    전체 시스템을 대상으로 백업 필요할수도 있음.
  2. 어디에 백업할 것인가?
    - 로컬 백업 : 하드디스크, 보조 저장장치 등.
    - 오프사이드 백업 : 클라우드, 원격 시스템 등.
    둘다 병행
  3. 언제 백업할 것인가?
    - 백업주기 결정
    - 백업 시작 시간 결정
  4. 적용할 백업 유형은 무엇인가?
    - 전체 백업 : 전체 시스템, 하드디스크, 파티션 단위로 모두 백업. 데이터 공간 효율성 떨어짐.
    - 증분 백업 : 전체 백업 이후 변경된 데이터만 백업하는 것. 복원하기 위해서는 전체백업본과 변경데이터 모두 필요.
    - 차등 백업 : 지난 백업에 이번 변경 데이터를 누적하여 백업 데이터를 생성. 전체 백업본과 가장 최근 백업데이터만 있으면 복원.
  5. 백업의 압축과 암호화를 할 것인가?
    백업데이터를 네트워크로 전송할 때 대역폭을 절약하고 용량을 최대한으로 이용하기 위해 압축.
    데이터에 민감 정보가 있을떄 암호화 고려
  6. 백업을 어떻게 검증할 것인가?
    백업 모의복원과 백업 유틸리티를 이용해 백업파일이 올바른지 확인.
  7. 백업 유틸리티 및 서비스
    오픈소스 백업 유틸리티를 이용해 자동화된 백업 서비스를 구축하거나 백업 솔루션 도입.

파일 백업

 

1) tar

 

 1. 정의

여러 파일을 모아 아카이브 파일을 생성하거나 반대로 아카이브 파일오부터 원래 파일들을 추출할 때 사용하는 명령어.

 

2. 전체 백업

-c 아카이브 생성, -v 상세정보출력, -f 아카이브 파일명 지정, -p는 접근권한 유지

/path/to/dir 모든 파일과 디렉터리를 묶어 archive.tar.gz 생성

$tar -cvfp archive.tar /path/to/dir

-x 아카이브 파일 추출, -v 상세정보 출력, -f 아카이브 파일명  archive.tar.gz를 현재 디렉터리에 복원

$tar -xvf archive.tar

tar로 백업 시 -z 나 -j 옵션 등을 사용해 .gz 나 .bz2 형식으로 tar를 압축

$tar -cvxfp archive.tar.gz /path/to/dir

 

3. 증분 백업

-g 옵션을 사용해 변경된 파일 및 디렉터리 정보를 스냅샷으로 보관

스냅샷 파일을 통해 tar를 만들때마다 변경된 사항만 tar로 묶어 증분 백업을 수행

이전 백업 파일이 없는 최초 백업 파일을 특별히 레벨 0 백업

$tar -g snapshot -cvfp archive-level0.tar /path/to/dir

레벨1 백업시 기존 생성된 레벨0 백업의 스냅샷 파일을 통해 변경된 사항만 백업파일 생성.

$tar -g snapshot -cvfp archive-level1.tar /path/to/dir

복원시에는 백업한 순서대로 복원

$tar -xvf archive-level0.tar -C
$tar -xvf archive-level1.tar -C

 

2) cpio

  • 아카이브로 파일을 복사하거나 아카이브에서 파일을 추출할 때 사용.
  • tar와 유사한 기능이지만 tar는 많은 파일을 하나의 파일로 아카이브하기 위한 목적으로 개발,
    cpio는 하나의 디렉터리에서 다른 디렉터리로 파일을 복사하기 위한 목적으로 개발.
  • 파일시스템을 직접 접근하지 못하고 stdin 표준입력으로 입력 받으며, 증분 백업이 불가.

형식

Copy-out 모드 : name-list의 파일을 대상으로 아카이브를 생성

ex) 현재 경로의 모든 파일을 지정한 경로에 백업생성.

$ls | cpio -ov -H tar > home/test-account/backup.tar

 

Copy-in 모드 : 아카이브에서 파일들을 추출

$cpio -iv < home/test-account/backup.cpio

 

Copy-pass 모드 : name-list의 파일 지정한 디렉터리로 복사.

%find . -depth -print0 | cpio --null -pvd new-dir


파일시스템 및 디스크 백업

 

1) dump

주로 파티션 단위로 백업할 때 사용하는 명령어

 

-0-9 : 레벨을 지정. 0전체 1부터는 부분

-f : 백업 장치나 파일지정

-u : dump 완료후 /etc/dumpdates 파일에 백업정보 기록

 

/dev/hda7 전체를 백업하여 backup.dump 생성. 

$dump -0u -f backup.dump /dev/hda7

 

2) dd

지정한 장치를 지정한 형식으로 변환하는 명령어

 

if : 표준입력대신 지정한 파일이나 장치에서 읽음

of : 표준 출력 대신 파일이나 장치로 씀

bs : 블록을 읽거나 쓸때 크기 지정. 바이트 단위

 

$dd if=/dev/sda1 of=/dev/sdb1 bs=1k

 

3) restore

dump 명령으로 생성한 백업 파일을 복원할 때 사용

-i : 대화모드 통해 복원할 파일 지정

-f : 복원할 파일 지정

-r : 파일시스템 복원

 

$restore -rf backup.dump

네트워크 백업

 

1) rsync

네트워크로 연결된 리모트 컴퓨터의 파일들을 동기화하는 도구. 속도가 빠름.

로컬 컴퓨터와 다른 원격의 호스트, 원격 셸, rsync 데몬 간 파일 복사 가능

전송할 파일과 원격지의 파일 간 차이점을 계산하여 전송하는 델타전송 알고리즘을 적용해 네트워크 전송 속도를 향상.

우수한 성능으로 반복되는 백업이나 미러링 등의 작업에 사용.

 

형식

$rsync [option] source destination

 

ex) /home 의 모든 파일을 속성까지 동일하게 원격지 francis 호스트의 public_html에 복사

$rsync -avz /home francis:public_html/