완전한 백업은 API가 주는 모든 것에서 시작됩니다

모든 도구가 완전함을 내세우지만, 그것을 전부 해내는 도구는 없습니다. NotionManager는 세 가지를 합니다. API가 주는 것을 모두 가져오고, 부분들 사이의 구조를 다시 세우고, 한계를 정확히 밝힙니다.

API가 주는 것을 모두 읽습니다

첫 단계는 모두 읽고 아무것도 해석하지 않는 것입니다. 공유한 모든 루트, 모든 페이지, 모든 데이터베이스, 모든 속성, 모든 블록을 자식 페이지까지 따라 내려가며 남는 것이 없을 때까지 읽습니다. 복사본은 원재료로 시작합니다. 이 단계에서 걸러내거나 다시 만든 내용은 나중에 되찾을 수 없습니다.

댓글 건너뛰기나 파일 다운로드 건너뛰기처럼 직접 필터를 요청하지 않는 한, NotionManager는 가져올 수 있는 모든 것을 가져와 로컬 백업의 완전성을 지키려 합니다. 최종 렌더링은 스타일 차이로 달라질 수 있지만, 데이터 자체는 언제나 완전하고 신뢰할 수 있습니다.

다음으로, 원본 데이터의 의미를 다시 세웁니다

나머지 절반은 구조를 되돌려 놓는 일입니다. Notion은 트리이면서 동시에 그래프입니다. 페이지는 멘션과 관계로 서로를 가리키고, 롤업은 그 관계를 따라 값을 계산하며, 데이터베이스는 행을 고르고 정렬하는 뷰를 통해 읽힙니다. JSON이 담긴 폴더는 바이트는 같아도 그 의미를 모두 잃습니다.

관계를 다시 세우면 복사본을 탐색하고 검증할 수 있습니다. 관계를 따라 그것이 가리키는 페이지로 갈 수 있습니다. 롤업은 더 이상 계산되지 않는 수식이 아니라 그때의 값으로 보입니다. 데이터베이스를 열면 뷰가 보여주던 행을 그대로 읽을 수 있습니다.

재구성이 다루는 범위

  • 페이지 구조

    페이지의 전체 구조를 남기고, 지원하는 모든 블록 유형을 렌더링합니다. 리치 텍스트와 콜아웃 등이 포함됩니다.

  • 페이지 참조

    한 페이지가 다른 페이지를 언급하면 그 링크가 복사본 안에 남습니다. 오프라인에서도 따라갈 수 있습니다.

  • 데이터베이스 관계

    한 행이 다른 데이터베이스의 행을 가리키면, 복사본은 이를 복사된 두 페이지 사이의 관계로 유지합니다. 목적지를 잃은 식별자가 되지 않습니다.

  • 롤업

    계산된 값은 실행 시점의 값으로 보관합니다. 기록용 복사본은 그 순간의 값을 보여주어야 합니다.

  • 뷰

    각 뷰는 그것이 보여주던 데이터와 함께 복사됩니다. 행, 행의 속성, 그리고 뷰가 정한 순서까지 포함합니다.

  • 외부 미디어 파일

    이미지, 동영상, 오디오, PDF를 Notion에서 보이는 그대로 담습니다.

확인표, 있는 그대로

워크스페이스의 일부백업에 포함되나요?
페이지와 그 블록, 그리고 중첩포함됩니다. 가장 아래 자식 페이지까지 읽습니다.
데이터베이스와 그 데이터 소스, 속성포함됩니다. 각 행이 지닌 속성도 포함합니다.
페이지로서의 행포함됩니다. 각 행은 고유한 내용을 가진 페이지입니다.
페이지 사이의 관계와 멘션포함됩니다. 관계를 다시 세웠으므로 링크가 복사본 안에서 동작합니다.
롤업과 기타 계산된 값포함됩니다. 실행 당시의 값으로 보관합니다.
각 뷰 뒤에 있는 행과 순서포함됩니다. 뷰가 보여주던 데이터입니다.
뷰의 겉모습: 색상, 그룹화, 레이아웃일부만 포함됩니다. API가 전부를 반환하지 않으며, 복사본은 Notion 스타일에 최대한 가깝게 맞춥니다.
댓글일부만 포함됩니다. 해결되지 않은 댓글만 백업합니다. 댓글 백업은 별도 스위치가 필요하며, 백업 속도를 크게 떨어뜨리기 때문입니다.
외부 미디어 파일포함됩니다. 오프라인에서 가장 잘 읽을 수 있도록 기본적으로 모든 외부 미디어 파일을 로컬에 내려받습니다. 원하지 않으면 다운로드를 끌 수 있습니다.
API가 설명하지 않는 블록 유형일부만 포함됩니다. 선언된 유형과 위치 그대로 보관하고 페이지에 표시를 남기므로, 어디서 데이터가 빠졌는지 확인할 수 있습니다.
워크스페이스 권한, 공유, 게스트 액세스포함되지 않습니다. 그것은 Notion의 설정이며 콘텐츠가 아닙니다.
통합에 공유하지 않은 것포함되지 않습니다. 복사본에는 허용한 것만 들어갑니다.

이 확인표가 짧고 정직한 이유

무엇이든 저장한다고 말하는 백업 도구는 API를 자세히 보지 않았습니다. 위 목록은 Notion API가 누구에게나 줄 수 있는 것의 전부입니다. 마지막 세 줄이 가장 중요합니다. 백업이 Notion을 대체하는 것이 아니라 보완하는 이유가 여기에 있습니다.

쓸모 있는 기준은 이론적으로 완전한지가 아닙니다. 직접 열어서 확인할 수 있는지입니다. 탐색 가능한 복사본은 바로 그 일을 위해 있습니다.

다행히 사용자 입장에서 Notion에서 볼 수 있는 데이터는 모두 백업할 수 있습니다. 백업할 수 없는 것은 대부분 스타일과 특수한 구조이며, 그것이 백업의 가치나 유효성을 떨어뜨리지는 않습니다.

직접 복사본을 확인해 보세요

백업을 한 번 만들고 오프라인에서 열어 관계를 한두 개 따라가 보세요. 확인되는 내용은 위의 확인표와 일치해야 합니다.

다음에 볼 페이지

자주 묻는 질문

완전한 백업에 첨부 파일도 포함되나요?

파일은 콘텐츠의 일부입니다. API가 제공하는 한 외부 링크 뒤의 파일까지 포함해 NotionManager가 읽어 들입니다. 일부 파일 링크는 API가 일시적으로만 발급하고 곧 만료되므로, NotionManager는 모든 파일을 로컬로 내려받는 쪽을 택합니다. 이 동작은 직접 제어할 수 있습니다.

뷰의 색상과 레이아웃은 왜 백업되지 않나요?

Notion이 그것을 반환하는 인터페이스를 제공하지 않기 때문입니다. NotionManager는 뷰 스타일을 최대한 복원하지만, Notion과 정확히 같아진다고 약속하지는 않습니다.

롤업을 값으로 저장하면 복원 후에 틀린 값이 되나요?

복사본을 만든 순간에 대해서는 정확합니다. 기록용 복사본은 그때 워크스페이스가 보여주던 것을 보여주어야 하며, 수식이 지금 계산하는 값이 아닙니다.

‘완전’은 ‘전부’와 같은 뜻인가요?

아닙니다. 어떤 Notion 백업도 그렇게 정직하게 말할 수 없습니다. 완전이란 API가 주는 모든 것을 Notion이 구성하는 방식대로 정리하고, API가 거부하는 부분은 공개적으로 밝힌다는 뜻입니다.