최근 Notion 측의 DNS 문제로 전세계 Notion 서버가 한동안 다운되는 심각한 문제가 발생했습니다. 많은 사용자들이 Notion에 자료를 모아두기 때문에 이러한 장애로 불안함을 느끼고, 백업을 하고자 합니다. 이번 시간에는 GitLab과 Notion의 api를 활용해 Notion Workspace를 매일 자동으로 백업하는 방법을 살펴보겠습니다.
주의!
이 방법은 데이터만을 백업하기 위한 방법으로, 내보낸 파일을 재업로드하여 워크스페이스에 콘텐츠를 다시 생성할 수는 없습니다. Notion 워크스페이스를 이전하는 방법은 여기서 확인하세요. 또한, GitLab 무료 계정에는 용량 제한이 있기 때문에 다량의 대용량파일을 백업하기 위한 방법으로 적절하지 않을 수 있습니다.
1. GitLab 계정 등록하기
GitLab 계정이 없는 경우 GitLab.com에서 GitLab 계정을 생성하세요. 무료 계정은 10GB까지 데이터를 백업할 수 있습니다. 계정에 추가적인 보안을 원하시면 2FA를 설정하세요.
2. Notion 계정 토큰과 워크스페이 스 id 추출하기
가장 어렵고 복잡한 단계입니다. 현재 Notion은 공식 api를 제공하지 않기 때문에, 백업 스크립트에서 개념 동작을 흉내내야 합니다. 이를 위해서 우리는 token_v2
와 전체 워크스페이스 내보내기 리퀘스트의 spaceId
를 추출해야 합니다.
구글 크롬에서 다음과 같은 방법으로 추출할 수 있습니다.
- http://notion.so/에서 “설정과 멤버” → “설정”으로 이동하세요.
- Command+Option+J (Mac)나 Control+Shift+J (Windows, Linux, Chrome OS)를 눌러서 크롬 개발자도구를 여세요.
- 다음 스크린샷에서처럼 네트워크 탭으로 이동하세요.
- XHR filter (1)를 활성화하고, clear console (2)을 누른 뒤, Notion에서 전체 워크스페이스 콘텐츠 내보내기를 클릭하고 (3), enqueueTask를 선택하세요 (4).
열러있는 Headers 탭에서 cookie: 항목과 많은 텍스트가 나올 때까지 스크롤합니다. 이 텍스트에서 다음(5)와 같은 부분을 찾아야 합니다.
token_v2=xxx;
xxx는 매우 긴 숫자와 문자의 조합으로 되어있고 여러 줄로 이루어질 수 있습니다. **token_v2=**와 ; 사이의 모든 텍스트를 복사하고 어딘가에 저장해두세요. 이를 NOTION_TOKEN_V2
라 하겠습니다. 이 정보가 곧 필요할겁니다.
이제 맨 아래로 스크롤하고 Request Payload 섹션에서 다음(6)과 같은 부분을 확인할 수 있을겁니다.
spaceId: “4489c211-09d6-4069-ae3b-1665e25d6c03”
따옴표 내의 값을 저장하고, NOTION_SPACE_ID
라 하겠습니다.
3. GitLab에서 push token 생성
백업을 업데이트하는 스크립트를 허용하기 위해서는 적절한 권한을 가진 토큰을 생성해야 합니다. GtiLab에서 Settings → Access Tokens로 이동하고 다음 스크린샷처럼 폼을 완성하세요.
Create Personal access token을 누르면 Your new personal access token을 단 한 번 보여줍니다. 복사해서 저장하고, CI_PUSH_TOKEN
이라 이름지어주세요. 나중에 필요합니다.