만드는 기록/작게 만든 도구들

원고와 사진 파일의 버전·백업 정책을 직접 만든 기록

Roslyn 2026. 9. 26. 09:00
반응형

백업은 파일을 복사하는 일이라고 생각하기 쉽습니다. 하지만 복사본이 어디에 있는지 모르거나, 최신 버전인지 확인할 수 없거나, 복구해 본 적이 없다면 위기 때 백업은 존재하지 않는 것과 비슷합니다.

저는 원고와 사진을 동시에 다루면서 파일의 종류보다 복구 시나리오를 먼저 정했습니다. 이번 글에서는 비용이 큰 시스템보다 혼자 유지할 수 있는 백업 정책을 설명합니다.

원본·공개 자산·백업을 분리합니다

작업 폴더에는 편집 중인 원본과 업로드용 변환 파일이 함께 생깁니다. 이 둘을 백업할 때 같은 폴더에 넣으면 무엇을 보존해야 하는지 모호해집니다. 저는 원본, 공개 자산, 백업을 저장 위치와 키 구조에서 구분합니다.

원본은 수정 이력을 보존하고, 공개 자산은 다시 만들 수 있도록 생성 정보만 남깁니다. 백업은 현재 폴더의 복사본이 아니라 복구에 필요한 최소 파일을 기준으로 구성합니다.

영역목적보존 기준

원본 다음 수정과 재사용 버전·생성일·작업 메모
공개 자산 게시된 결과 확인 게시 URL·변환 형식
백업 장애·삭제 복구 체크섬·보존 기간·복구 테스트

파일명보다 메타데이터와 체크섬을 신뢰합니다

파일명에 날짜와 버전을 넣는 것은 도움이 되지만, 사람이 실수로 이름을 바꿀 수 있습니다. 저는 백업 목록에 파일 크기, 수정 시각, 체크섬, 원본 경로를 함께 기록합니다. 같은 파일이 실제로 같은 내용인지 확인하기 위해서입니다.

사진처럼 변환본이 많은 자산은 원본과 변환 규칙을 함께 남깁니다. 그래야 공개용 크기를 다시 만들 때 결과가 달라져도 원인을 찾을 수 있습니다.

  • 체크섬: 파일 내용이 바뀌었는지 확인합니다.
  • 생성 정보: 도구·모델·프리셋·변환 시각을 기록합니다.
  • 경로: 복구할 때 원래 프로젝트의 어디에 놓을지 적습니다.

보존 기간은 파일의 역할에 따라 다르게 둡니다

모든 파일을 영원히 보존하면 비용과 검색 부담이 커집니다. 반대로 임시 파일을 너무 빨리 지우면 재현에 필요한 중간 결과가 사라집니다. 저는 원본과 공개 자산, 임시 결과에 각각 다른 보존 기간을 둡니다.

Cloudflare R2의 수명주기 기능처럼 자동 삭제나 저장 등급 전환을 사용할 때는 적용 대상 접두사를 좁게 지정합니다. 규칙을 바꾼 뒤 기존 파일에 언제 적용되는지도 확인해야 합니다.

  • 원본: 작품이나 서비스가 유지되는 동안 보존합니다.
  • 공개 자산: 게시 기록과 함께 장기 보존합니다.
  • 임시 결과: 재현에 필요한 기간을 정하고 자동 정리합니다.

복구 테스트가 끝나야 백업이 완료됩니다

저는 분기마다 파일 하나를 골라 새 폴더에 복구해 봅니다. 파일이 열리는지, 링크와 경로가 맞는지, 필요한 설정이 함께 있는지 확인합니다. 복구 시간이 예상보다 길면 백업 정책을 수정합니다.

복구 테스트는 실제 원본을 덮어쓰지 않는 복사본에서 진행합니다. 삭제 규칙을 시험할 때도 테스트 접두사를 따로 사용해야 실수가 사고가 되지 않습니다.

운영 가능한 크기로 줄이는 순서

작은 도구나 서비스의 설계는 기능 목록을 늘리는 일보다 경계를 줄이는 일에 가깝습니다. 저는 먼저 입력과 출력, 실패했을 때 사용자가 되돌릴 수 있는 지점을 적습니다. 그 다음 실제 사용량이나 파일 한두 개로 기준선을 만들고, 가장 비싼 작업과 가장 위험한 작업을 따로 표시합니다. 이 과정을 거치면 ‘있으면 좋은 기능’과 ‘없으면 복구할 수 없는 기능’을 구분할 수 있습니다.

첫 버전은 관찰할 수 있어야 합니다. 요청 수·처리 시간·오류·복구 성공 여부처럼 다음 결정을 돕는 기록을 최소한으로 남깁니다. 자동화나 클라우드 기능을 붙일 때도 기본값과 상한을 먼저 정하고, 테스트용 자원과 운영 자원을 분리합니다. 실패했을 때 원상 복구할 수 없는 기능은 공개 범위를 좁혀 시작하는 편이 안전합니다.

  • 경계: 지원하는 입력·사용자·환경과 지원하지 않는 범위를 적습니다.
  • 기준선: 정상 입력 하나와 실패 입력 하나를 저장해 반복 테스트합니다.
  • 관찰: 비용·지연·오류·복구에 필요한 최소 지표만 수집합니다.
  • 되돌리기: 배포·삭제·마이그레이션을 취소하는 절차를 실제로 시험합니다.

다음 작업에서 다시 확인할 항목

한 번 적용한 방법이 언제나 같은 결과를 내는 것은 아닙니다. 사람과 서비스와 원고의 조건이 바뀌면 같은 원칙도 다른 판단을 요구합니다. 그래서 저는 글을 작성한 뒤 결론만 보관하지 않고, 결론이 성립한 조건과 다시 확인해야 할 조건을 함께 적습니다. 이 기록이 있으면 몇 달 뒤 글을 업데이트할 때 당시의 경험을 현재의 사실처럼 착각하지 않을 수 있습니다.

특히 버전·정책·가격·플랫폼 기능처럼 외부에서 바뀌는 내용은 조사한 날짜와 공식 문서의 주소를 남깁니다. 발행 시점에 문서가 달라졌다면 본문에 변경 사실을 표시하고, 직접 확인하지 못한 부분은 독자가 알 수 있도록 범위를 제한합니다. 경험을 공유하는 글도 다른 사람의 환경에 그대로 적용될 수 있으므로, 성공 사례보다 실패 조건을 함께 쓰는 편이 안전합니다.

마지막으로 이 글을 읽은 분이 바로 할 수 있는 행동은 하나로 줄입니다. 모든 항목을 한꺼번에 바꾸기보다 현재 상태를 기록하고, 작은 실험을 한 번 실행하고, 결과를 다시 적는 순서입니다. 그렇게 쌓인 기록이 다음 글의 소재가 되고, 처음의 판단을 더 정확하게 고쳐 쓰는 근거가 됩니다.

  • 범위 표시: 이 글의 결론이 적용되는 환경과 적용되지 않는 환경을 구분합니다.
  • 날짜 기록: 버전·정책·가격·문서를 확인한 날짜를 남깁니다.
  • 실패 조건: 어떤 상황에서는 이 방법을 쓰지 말아야 하는지 적습니다.
  • 작은 실행: 독자가 오늘 시도할 수 있는 가장 작은 행동을 고릅니다.
  • 후속 기록: 실행 결과와 다음에 바꿀 조건을 별도 메모로 남깁니다.

이 기록을 나중에 다시 읽을 때는 결과만 보지 않고 당시의 조건도 함께 확인합니다. 조건이 달라졌다면 결론을 그대로 복사하지 말고 현재의 입력과 제약을 다시 적습니다. 그 과정을 거쳐야 이 글이 단순한 경험담이 아니라 다음 판단을 돕는 작업 기록으로 남습니다.

마치며

백업의 목표는 저장 공간을 늘리는 것이 아니라, 잃어버린 원고와 사진을 다시 작업 가능한 상태로 만드는 것입니다. 오늘 중요한 파일 세 개를 골라 위치·체크섬·복구 위치를 기록해 보시기 바랍니다.

참고한 문서: Cloudflare R2 개요 · R2 Object Lifecycles

반응형