백업과 복구 · 복구 리허설 · 실습
복구 리허설
목표
앞에서 만든 백업 세트로 복구 리허설을 수행하고, 시간을 재서 RTO 충족 여부를 판정합니다.
왜 중요한가
복구는 순서와 검증이 전부입니다. 임시 경로를 거치지 않고 -C / 로 바로 푸는 것은 되돌릴 수 없는 작업이고, 증분 복원 순서를 어기면 있어야 할 파일이 사라집니다. 그리고 RTO 는 실제로 재기 전까지 희망사항입니다 — 실무에서 RTO 를 못 지키는 원인 1위는 추출이 느려서가 아니라 백업을 가져오는 시간을 계산에 넣지 않았기 때문입니다.
이 실습의 복구 목표는 RPO 24시간, RTO 300초 입니다.
단계
1. /root/rest 디렉터리를 만들고, /root/rest/objective.txt 에 다음 두 줄을 적으세요.RPO=24h / RTO=300s
2. /root/bk/full.tar.gz 를 /root/rest/check/ 에 복원하세요. 현재 /root/bk/src 는 건드리면 안 됩니다.
3. 복원본과 원본을 재귀 비교해 결과를 /root/rest/diff.txt 로 저장하세요. (4번에서 추가한 파일 때문에 차이가 있을 수 있으니, 비교 대상은 conf 와 data 디렉터리로 한정해도 좋습니다.)
4. 아카이브에서 src/app/conf.yaml 하나만 /root/rest/one/ 으로 복원하세요. 그 디렉터리에 다른 파일이 있으면 안 됩니다.
5. --strip-components 를 써서 아카이브의 src/ 를 떼고 /root/rest/stripped/ 에 복원하세요. 결과적으로 /root/rest/stripped/app/main.py 가 존재해야 합니다.
6. 증분 세트를 순서대로 복원하세요. /root/rest/inc/ 에 전체 → inc0 → inc1 순으로 풀어, /root/rest/inc/src/app/new.py 가 존재해야 합니다.
7. 2번부터 6번까지의 전체 복구를 다시 한 번 수행하며 시간을 재고, /root/rest/timing.txt 에 다음 두 줄을 적으세요.ELAPSED=<초> / MEETS_RTO=<yes|no> (300초 이내면 yes)
8. /root/rest/report.txt 를 다음 5줄로 만드세요.RESTORED_FILES=<2번 복원본의 파일 수> / SELECTIVE=1 / STRIPPED_OK=yes / INCREMENTAL_OK=yes / RTO_MET=<7번의 판정>
참고
- 선택 복원은
tar -xzf <아카이브> -C <대상> <아카이브 안 경로>입니다. 경로는tar -tzf로 먼저 확인하세요. - 증분 복원은
tar --listed-incremental=/dev/null -xzf <아카이브> -C <대상>형태로 순서대로 실행합니다. - 시간 측정은
S=$(date +%s); ...; E=$(date +%s); echo $((E-S))입니다. - 흔한 실수 1: 2번에서 대상 디렉터리를 미리 만들지 않으면 tar 가 실패합니다.
- 흔한 실수 2: 6번에서 증분 순서를 뒤집으면 나중 변경이 이전 것으로 덮여 파일이 사라집니다.
단계 8개
- 복구 목표 기록
- 임시 경로로 복원
- 원본과 비교
- 선택 복원
- 경로 조정 복원
- 증분 순서대로 복원
- 복구 시간 측정
- 리허설 보고서