본문으로 건너뛰기
HexaTransfer
블로그로 돌아가기
클라우드 및 스토리지

파일 버전 관리: 변경 사항을 절대 잃지 마세요

데이터 손실을 방지하는 파일 버전 관리를 도입하세요. 버전 관리 전략, 스토리지 최적화, 복구 워크플로를 안내합니다.

파일 버전 관리는 모든 개정본을 저장해 실수로 덮어쓰거나 삭제하거나 랜섬웨어 피해가 발생해도 롤백할 수 있게 합니다. 플랫폼 수준에서 활성화하세요. S3 Versioning, Azure Blob Versioning, Google Cloud Storage 객체 버전 관리, Dropbox 버전 기록, SharePoint 주요/부 버전. 그리고 이전 버전을 30~180일 후 만료하는 라이프사이클 규칙과 짝을 지으세요. 버전 관리 없이는 rm -rf 하나나 오작동하는 동기화 클라이언트가 몇 초 만에 수년간의 작업을 날릴 수 있고, 클라우드 백업이라 생각했던 것이 손상 내용의 동기화 복사본에 불과합니다.

플랫폼 버전 관리가 실제로 하는 일

버전 관리가 활성화되면 덮어쓰기는 객체를 교체하지 않고 새 VersionId로 새 버전을 만듭니다. 이전 바이트는 해당 ID로 검색 가능한 상태로 디스크에 남습니다. 삭제는 파괴가 아닌 "삭제 마커"가 됩니다. 이전 버전은 명시적으로 삭제하기 전까지 복원 가능한 상태로 남습니다.

대부분의 데이터 손실이 치명적인 하드웨어 장애(클라우드 내구성이 처리)가 아니기 때문에 중요합니다. 누군가가 채워진 스프레드시트 위에 빈 스프레드시트를 저장하거나, 버그가 있는 스크립트가 수천 개의 파일을 잘라내거나, 랜섬웨어가 닿는 모든 것을 암호화하는 경우입니다. 버전 관리로 30일 전으로 돌아가 정상이었던 시점을 선택할 수 있습니다.

모든 버전 유지의 비용

버전은 스토리지를 소비하고 스토리지는 돈이 듭니다. 활발한 편집이 이루어지는 10 TB 버킷은 1년에 30~50 TB의 버전이 쌓일 수 있습니다. 완화 방법: 설정된 기간 후 현재 버전이 아닌 버전을 만료하거나 저렴한 티어로 이동하는 라이프사이클 규칙.

실용적인 S3 라이프사이클 정책:

  • 현재 버전이 아닌 버전: 7일 후 S3 Standard-IA로 전환
  • 현재 버전이 아닌 버전: 30일 후 Glacier Flexible Retrieval로 전환
  • 현재 버전이 아닌 버전: 180일 후 삭제
  • 현재 버전이 아닌 버전 없는 삭제 마커: 1일 후 삭제

Azure와 GCS의 동등한 설정은 blobVersion 나이 또는 Noncurrent 조건을 사용합니다. 비용을 계산하세요. S3 Standard의 버전 10 TB는 월 $230, Glacier Flexible은 월 $36입니다. 티어 전환은 YAML 몇 분의 가치가 있습니다.

주요 버전과 부 버전

SharePoint, Google Workspace, Notion 같은 문서 지향 시스템은 주요(게시) 버전과 부(초안) 버전을 구분합니다. 초안은 마일스톤 사이에 쌓이고, 주요 버전은 누군가가 승인한 안정된 상태를 나타냅니다. 계약서, 정책 문서, 사양서의 경우 이 구분이 유용합니다. 초안 v3.1, v3.2를 비공개로 계속 편집하면서 "주요 v3" 링크를 공개로 공유할 수 있습니다.

외부 이해관계자를 위한 참조점으로 주요 버전을 사용하세요. 읽기 전용 권한이나 승인 워크플로로 잠가 게시된 상태를 아무도 실수로 덮어쓰지 못하게 하세요. SharePoint의 "콘텐츠 승인 필요"는 클릭 하나면 되고, Google Drive의 승인 흐름은 2분 설정입니다.

소스 코드 버전 관리 대 문서 버전 관리

Git은 diff가 줄별로 의미 있는 텍스트(소스 코드, 마크다운, .tf 파일)에는 탁월합니다. 바이너리에는 좋지 않습니다. 50 MB .psd 파일을 두 번 체크인하면 저장소 크기가 두 배가 되고 git diff는 도움이 되지 않습니다. Git LFS(대용량 파일 스토리지)는 바이너리를 별도 저장소로 이동하고 저장소에는 포인터를 유지합니다. 아트 에셋에는 합리적이지만 일반 문서에는 좋지 않습니다.

.docx, .xlsx, .pptx, .pdf 파일에는 Git 대신 클라우드 플랫폼의 내장 버전 관리를 사용하세요. SharePoint, Drive, Dropbox 모두 기본으로 버전별 델타를 저장하고 비즈니스 사용자가 탐색할 수 있는 타임라인 UI를 제공합니다. 혼합 콘텐츠(코드 + PDF + 디자인 파일)의 경우 일부 팀은 오브젝트 스토리지 위에 Git-for-data 레이어로 DVC나 LakeFS를 사용합니다. ML과 데이터 팀에서 조사해볼 만합니다.

컴플라이언스 일정에 연계된 보존

규정이 버전을 얼마나 오래 보존해야 하는지를 정합니다. SEC Rule 17a-4는 브로커-딜러 기록을 3~6년 보존합니다. HIPAA는 최소 6년. SOX는 재무 기록을 7년. GDPR은 반대 방향으로 제한합니다. 필요 이상으로 개인 데이터를 보관하지 마세요. 개인정보보호법(PIPA) 제21조도 개인정보 파기 의무를 규정하며, 보존 목적이 달성되면 지체 없이 파기해야 합니다.

민감한 파일에 태그를 지정해 라이프사이클 규칙이 규정 최소값과 최대값을 준수하게 하세요. retention-class: sox-7y 같은 S3 태그는 라이프사이클 전환, Object Lock 기간, 최종 삭제를 구동할 수 있습니다. 불변 규정 사본에는 S3 Object Lock 컴플라이언스 모드를 사용하세요. 루트 사용자도 보존 기간 내에는 삭제할 수 없으며, 이것이 바로 WORM(Write Once Read Many) 규칙이 요구하는 것입니다.

버전을 통한 랜섬웨어 보호

동기화 클라이언트에 도달한 랜섬웨어 공격은 엔드포인트의 파일을 암호화하고 암호화된 버전을 클라우드에 밀어 넣습니다. 버전 관리가 구해줍니다. 암호화 전 버전이 여전히 존재합니다. 단, 두 가지 조건이 충족될 때만: 공격 전에 버전 관리가 활성화돼 있고, 보존 기간이 탐지 시간을 커버할 만큼 길어야 합니다.

2025년 중견기업의 랜섬웨어 평균 체류 시간은 약 11일입니다. 30일 버전 보존이 최소이고, 90일이 더 안전합니다. 한 계정이 침해당해도 공격자가 버전 기록을 제거하지 못하도록 버전 관리와 삭제 보호(S3 MFA Delete, 다른 관리자가 있는 Azure 소프트 삭제)를 함께 사용하세요. 분기별로 복원을 테스트하세요. 테스트 폴더 삭제를 시뮬레이션하고 복구 시간을 측정하세요.

공유 버전의 명명 규칙

특정 버전을 외부에 공유할 때 — 클라이언트에게 "승인된 계약서 v3"을 보낼 때 — 누군가가 편집해도 바뀌지 않는 안정적인 포인터가 필요합니다. 세 가지 패턴 중 하나를 사용하세요.

  1. 특정 VersionId에 대한 서명된 URL(S3: ?versionId=...) — 최대 7일 유효, 불변
  2. 승인된 버전의 복사본을 파일명에 버전이 있는 별도 /published/ 버킷으로(contract-v3.0-2026-12-15.pdf)
  3. 편집 후 변경이 공유 복사본에 영향을 주지 않도록 PDF 내보내기 스냅샷

플랫폼 외부의 누군가와 특정 스냅샷을 일회성으로 공유할 때는 종단간 암호화 전송 도구가 일회성 링크로 특정 파일을 보냅니다. HexaTransfer가 이에 적합합니다. 동결된 버전을 업로드하고 링크를 보내면 수신자는 전체 플랫폼 접근 없이 정확히 의도한 것을 받습니다.

버전 이벤트 모니터링과 알림

버전 기록은 필요할 때 알아채야만 유용합니다. CloudTrail(AWS), Activity Log(Azure), Cloud Audit Logs(GCP)는 모든 버전 관리 이벤트를 기록합니다. 비정상적인 삭제율에 알림을 설정하세요. 한 시간에 10,000건의 DeleteObject 호출은 사용자가 정리하는 것이 아닐 가능성이 높습니다.

버킷별 버전 수, 총 버전 스토리지, 삭제 마커 비율을 보여주는 간단한 대시보드를 구축하세요. 삭제 마커가 갑자기 라이브 객체를 초과하는 버킷은 위험 신호입니다. 대량 삭제가 발생했거나, 보존 기간이 보관하려던 내용을 곧 삭제할 참이거나. 주간 이메일 요약이 분기 감사를 기다리는 것보다 낫습니다.

복구 런북

필요하기 전에 복원 프로세스를 문서화하세요. 좋은 런북은 다음을 다룹니다.

  1. 버전 목록 조회 방법(aws s3api list-object-versions, az storage blob list --include v)
  2. 특정 VersionId를 현재 버전으로 복원하는 방법(S3: --version-id와 함께 복사)
  3. 전체 접두사를 특정 시점으로 일괄 복원하는 방법(타임스탬프 필터를 사용한 스크립트)
  4. 삭제된 객체를 복원하는 방법(삭제 마커 제거)
  5. 각 작업의 권한이 있는 사람(보통 손실을 야기한 사람과 동일인이 아님)

인쇄해두세요. 가짜 시나리오로 분기에 한 번 연습하세요. 실제 사건이 발생하면 압박 속에서 문서를 읽는 것보다 근육 기억이 낫습니다.

hexatransfer.com에서 사용해보세요 — 무료, 계정 불필요, 최대 10 GB.

엔드투엔드 암호화로 대용량 파일을 안전하게 전송

엔드투엔드 암호화로 최대 10GB의 파일을 무료로 전송하세요. 계정이 필요하지 않습니다. 업로드 전에 브라우저에서 파일이 암호화되어 다른 사람은 읽을 수 없습니다.

파일 보내기