소개
컴퓨팅 세계에서 데이터는 매우 중요합니다. 하드웨어 고장, 실수로 인한 삭제 또는 악의적인 공격으로 인한 데이터 손실은 치명적일 수 있습니다. 데이터 복원력 (Data resilience) 은 데이터가 보호되고, 사용 가능하며, 장애 발생 시 복구될 수 있도록 보장하는 실천 방법입니다.
이 실습에서는 Linux 시스템에서 데이터 복원력의 두 가지 기본 개념인 백업 생성 및 파일 무결성 검증에 대해 소개합니다. 이러한 작업을 수행하기 위해 표준 Linux 명령줄 도구를 사용하게 됩니다.
다음 내용을 배우게 됩니다:
tar명령을 사용하여 중요한 파일의 압축 아카이브 (백업) 를 생성하는 방법- 파일을 삭제하여 데이터 손실 시나리오를 시뮬레이션하는 방법
- 백업 아카이브에서 데이터를 복원하는 방법
md5sum과 체크섬 (checksum) 을 사용하여 파일이 변경되거나 손상되지 않았는지 확인하는 방법
이 실습이 끝나면 모든 시스템 관리자 또는 개발자에게 필수적인 기술에 대한 실질적인 경험을 쌓게 될 것입니다.
Tar 를 사용하여 중요 파일의 로컬 백업 생성
이 단계에서는 tar (Tape Archive) 유틸리티를 사용하여 디렉토리의 압축 백업을 생성하는 방법을 배우게 됩니다. tar는 파일과 디렉토리를 단일 아카이브 파일로 묶는 강력하고 널리 사용되는 명령으로, 공간을 절약하기 위해 압축할 수 있습니다. 이는 로컬 백업을 생성하는 일반적인 방법입니다.
먼저, 설정 스크립트가 생성한 파일을 확인해 보겠습니다. 모든 작업은 ~/project 디렉토리에서 수행됩니다.
~/project 디렉토리의 내용을 나열합니다:
ls -R ~/project
critical_data 디렉토리와 그 파일들, 그리고 비어 있는 backups 디렉토리가 보여야 합니다.
/home/labex/project:
backups critical_data
/home/labex/project/backups:
/home/labex/project/critical_data:
config.txt user_data.csv
이제 critical_data 디렉토리의 압축 백업을 생성하여 backups 디렉토리에 저장해 보겠습니다. 다음과 같은 옵션으로 tar 명령을 사용합니다:
c: 새 아카이브를 생성합니다.z: gzip 으로 아카이브를 압축합니다. 이 때문에 파일에.gz확장자가 붙습니다.v: 상세 모드 (Verbose mode). 파일이 처리될 때마다 나열합니다.f: 생성할 아카이브의 파일 이름을 지정합니다.-C: 아카이브를 생성하기 전에 지정된 디렉토리로 이동합니다. 이렇게 하면 절대 경로 대신 상대 경로를 저장하게 되어 백업의 이식성이 향상되고 추출 시 중첩된 디렉토리 구조를 피할 수 있습니다.
터미널에서 다음 명령을 실행합니다:
tar -czvf ~/project/backups/backup.tar.gz -C ~/project critical_data
명령은 아카이브에 추가되는 파일 이름을 출력합니다:
critical_data/
critical_data/config.txt
critical_data/user_data.csv
이제 백업을 성공적으로 생성했습니다. 확실히 하기 위해 backups 디렉토리의 내용을 나열할 수 있습니다:
ls ~/project/backups
새 백업 파일이 보여야 합니다:
backup.tar.gz
데이터 손실 시뮬레이션 및 백업에서 복원
이 단계에서는 일반적인 재해 시나리오인 실수로 인한 데이터 삭제를 시뮬레이션합니다. 그런 다음 이전 단계에서 생성한 백업 파일을 사용하여 손실된 데이터를 복원합니다.
먼저 critical_data 디렉토리를 영구적으로 삭제하여 데이터 손실을 시뮬레이션해 보겠습니다. rm -rf 명령은 매우 강력하므로 주의해서 사용해야 합니다. 이 명령은 디렉토리와 파일을 재귀적으로 (-r) 그리고 강제로 (-f) 프롬프트 없이 제거합니다.
디렉토리를 삭제하려면 다음 명령을 실행합니다:
rm -rf ~/project/critical_data
이제 프로젝트 디렉토리의 내용을 나열하여 디렉토리가 사라졌는지 확인합니다:
ls ~/project
critical_data 디렉토리가 더 이상 없는 것을 볼 수 있습니다:
backups
걱정하지 마세요! 이것이 바로 백업이 있는 이유입니다. 이제 backup.tar.gz 아카이브에서 디렉토리를 복원해 보겠습니다. 다른 옵션으로 tar 명령을 다시 사용합니다:
x: 아카이브에서 파일을 추출합니다.z: gzip 으로 아카이브를 압축 해제합니다.v: 상세 모드 (Verbose mode), 파일이 추출될 때 표시합니다.f: 사용할 아카이브의 파일 이름을 지정합니다.-C: 파일을 추출할 디렉토리를 지정합니다.~/project로 추출합니다.
데이터를 복원하려면 이 명령을 실행합니다:
tar -xzvf ~/project/backups/backup.tar.gz -C ~/project
파일이 추출되는 출력을 볼 수 있습니다:
critical_data/
critical_data/config.txt
critical_data/user_data.csv
tar가 원래 디렉토리 구조를 유지했지만, 백업 생성 시 -C 옵션을 사용했기 때문에 절대 경로 접두사는 없다는 점에 유의하십시오. 복원이 성공했는지 확인해 보겠습니다. ~/project 디렉토리의 내용을 다시 나열합니다:
ls -R ~/project
critical_data 디렉토리와 모든 원본 파일이 복원되었음을 볼 수 있습니다.
/home/labex/project:
backups critical_data
/home/labex/project/backups:
backup.tar.gz
/home/labex/project/critical_data:
config.txt user_data.csv
시뮬레이션된 데이터 손실 이벤트로부터 성공적으로 복구했습니다.
체크섬으로 파일 무결성 모니터링
이 단계에서는 파일 무결성을 모니터링하는 방법을 배우게 됩니다. 백업은 데이터 손실로부터 보호해주지만, 파일이 미묘하게 손상되었거나 악의적으로 변경되었는지 여부는 알려주지 않습니다. 체크섬 (또는 해시) 은 파일의 고유한 디지털 지문입니다. 파일의 비트 하나라도 변경되면 체크섬은 완전히 달라집니다. 따라서 파일 무결성을 확인하는 데 탁월한 도구입니다.
MD5 체크섬을 계산하는 md5sum 명령을 사용합니다. SHA-256 (sha256sum) 이 암호학적으로 더 안전하지만, md5sum은 간단하며 이 시연에 충분합니다.
먼저 중요 파일에 대한 체크섬을 생성하고 참조 파일에 저장해 보겠습니다.
md5sum ~/project/critical_data/* > ~/project/checksums.md5
이제 방금 생성한 checksums.md5 파일의 내용을 확인합니다:
cat ~/project/checksums.md5
출력에는 각 파일에 대한 고유한 체크섬이 표시됩니다. 체크섬 값은 다음 값과 동일해야 합니다:
d7118547a95c5470575962481c2e358c /home/labex/project/critical_data/config.txt
b643407358b9de495715f13432577d33 /home/labex/project/critical_data/user_data.csv
이제 파일 중 하나에 대한 무단 수정을 시뮬레이션해 보겠습니다. config.txt 파일에 주석을 추가하겠습니다.
echo "## This is a change" >> ~/project/critical_data/config.txt
파일이 수정되었습니다. 파일 목록만 보는 관찰자에게는 아무 문제도 없어 보입니다. 하지만 체크섬 파일을 사용하여 변경 사항을 확인할 수 있습니다. -c 옵션은 md5sum에게 목록과 비교하여 파일을 확인하도록 지시합니다.
md5sum -c ~/project/checksums.md5
명령은 checksums.md5에 나열된 각 파일을 디스크의 현재 상태와 비교하여 확인합니다. 출력은 config.txt가 수정되었음을 명확하게 보여줍니다:
/home/labex/project/critical_data/config.txt: FAILED
/home/labex/project/critical_data/user_data.csv: OK
md5sum: WARNING: 1 computed checksum did NOT match
이 "FAILED" 상태는 파일이 더 이상 원래의 신뢰할 수 있는 상태가 아님을 즉시 알려줍니다. 이는 데이터 손상 또는 보안 침해를 감지하는 강력한 기술입니다.
요약
이 랩을 완료하신 것을 축하드립니다! Linux 환경에서 기본적인 데이터 복원력 (data resilience) 실무 경험을 쌓으셨습니다.
이 랩에서는 다음을 배웠습니다:
- 백업 생성: 데이터 손실 방지의 핵심 기술인 중요 파일의 압축 백업을 생성하기 위해
tar명령을 사용했습니다. - 데이터 복원: 데이터 손실 시나리오를 시뮬레이션하고
tar아카이브에서 파일을 성공적으로 복원하여 완전한 백업 및 복구 주기를 시연했습니다. - 파일 무결성 확인:
md5sum을 사용하여 파일 체크섬을 생성하고 확인했으며, 이는 무단 수정 또는 데이터 손상을 감지하는 강력한 방법입니다.
이러한 기술은 모든 시스템의 보안 및 가용성을 유지하는 데 필수적입니다. 데이터를 정기적으로 백업하고 무결성을 확인하는 것은 책임감 있는 시스템 관리 및 견고한 애플리케이션 배포의 중요한 구성 요소입니다.



