LabHub
배우기 러닝패스 코스

バックアップとリストア

バックアップ検証の自動化

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

백업의 무결성을 세 단계로 검증하고, 단계별 종료 코드를 가진 검증 스크립트를 작성합니다.

왜 중요한가

"백업이 돌고 있다" 와 "백업이 유효하다" 는 다른 말입니다. 검증은 세 단계입니다 — 존재하는가, 읽히는가, 실제로 복구되는가. 앞의 둘은 자동화할 수 있고 그것만으로도 대부분의 조용한 실패를 잡습니다. 그리고 단계별로 다른 종료 코드를 주면 모니터링에서 어디서 깨졌는지 바로 알 수 있습니다 — "백업 검증 실패" 보다 "압축 스트림 손상" 이 훨씬 유용한 알람입니다.

단계

  1. /root/bv 디렉터리를 만들고, /root/bk 아래의 .tar.gz 파일들에 대한 sha256 매니페스트를 /root/bv/manifest.sha256 으로 만드세요.
  2. 매니페스트로 검증을 수행해 결과를 /root/bv/check.txt 로 저장하세요. 모든 줄이 정상이어야 합니다.
  3. /root/bk/full.tar.gz 의 압축 스트림 무결성을 검사하고, 종료 코드를 /root/bv/gzip.txtrc=0 형식으로 적으세요.
  4. 같은 파일의 아카이브 구조를 검사하고, 종료 코드를 /root/bv/tarlist.txtrc=0 형식으로 적으세요.
  5. /root/bv/corrupt.tar.gz 를 만드세요. /root/bk/full.tar.gz 를 복사한 뒤 중간 바이트를 손상시켜야 합니다. 그리고 압축 검사가 실패하는 것을 확인해 출력을 /root/bv/corrupt-detected.txt 로 저장하세요.
  6. /root/bv/last-success 파일에 현재 시각을 ISO 형식(date -Is)으로 기록하고, 그 파일이 24시간 이내인지 판정한 결과를 /root/bv/fresh.txtFRESH=yes 형식으로 적으세요.
  7. /root/bv/verify.sh 를 작성하세요. 첫 번째 인자로 아카이브 경로를 받아 다음처럼 동작해야 합니다.
    • 파일이 없거나 크기가 0 이면 종료 코드 1
    • 압축 스트림이 손상됐으면 종료 코드 2
    • 아카이브 구조가 손상됐으면 종료 코드 3
    • 모두 통과하면 종료 코드 0 과 함께 OK 를 포함한 메시지 출력 채점기가 정상 아카이브와 5번의 손상 아카이브 양쪽으로 실행합니다.
  8. /root/bv/report.txt 를 다음 4줄로 만드세요. MANIFEST_OK=yes / CORRUPT_DETECTED=yes / SCRIPT_OK_RC=0 / SCRIPT_BAD_RC=<손상 아카이브에 대해 스크립트가 낸 종료 코드>

참고

체크섬 매니페스트

/root/bv 디렉터리를 만들고, /root/bk 아래의 .tar.gz 파일들에 대한 sha256 매니페스트를 /root/bv/manifest.sha256 으로 만드세요.

검증할 디렉터리에서 상대 경로로 만들면 나중에 검사가 편합니다.

매니페스트 검증

매니페스트로 검증을 수행해 결과를 /root/bv/check.txt 로 저장하세요. 모든 줄이 정상이어야 합니다.

sha256sum 에는 매니페스트를 읽어 검사하는 옵션이 있습니다. 모든 줄이 정상이어야 합니다.

압축 스트림 검사

/root/bk/full.tar.gz 의 압축 스트림 무결성을 검사하고, 종료 코드를 /root/bv/gzip.txtrc=0 형식으로 적으세요.

gzip 에는 압축 파일의 무결성만 검사하는 옵션이 있습니다. 성공하면 조용합니다.

아카이브 구조 검사

같은 파일의 아카이브 구조를 검사하고, 종료 코드를 /root/bv/tarlist.txtrc=0 형식으로 적으세요.

목록을 출력하되 화면에는 버리고 종료 코드만 봅니다.

손상 재현과 탐지

/root/bv/corrupt.tar.gz 를 만드세요. /root/bk/full.tar.gz 를 복사한 뒤 중간 바이트를 손상시켜야 합니다. 그리고 압축 검사가 실패하는 것을 확인해 출력을 /root/bv/corrupt-detected.txt 로 저장하세요.

사본을 만들어 바이트를 덧붙이거나 뒤집으세요. 원본은 건드리면 안 됩니다.

최근 성공 시각 기록

/root/bv/last-success 파일에 현재 시각을 ISO 형식(date -Is)으로 기록하고, 그 파일이 24시간 이내인지 판정한 결과를 /root/bv/fresh.txtFRESH=yes 형식으로 적으세요.

성공 시각을 파일에 남기고 그 파일의 나이를 검사하는 방식입니다. ISO 형식이 다루기 좋습니다.

단계별 검증 스크립트

/root/bv/verify.sh 를 작성하세요. 첫 번째 인자로 아카이브 경로를 받아 다음처럼 동작해야 합니다.

인자로 아카이브 경로를 받고, 실패 단계마다 다른 종료 코드를 주세요. 채점기가 정상/손상 양쪽으로 실행합니다.

검증 보고서

/root/bv/report.txt 를 다음 4줄로 만드세요. MANIFEST_OK=yes / CORRUPT_DETECTED=yes / SCRIPT_OK_RC=0 / SCRIPT_BAD_RC=<손상 아카이브에 대해 스크립트가 낸 종료 코드>

값은 실제 실행 결과여야 합니다. 종료 코드는 스크립트가 실제로 낸 값입니다.