IT 관리 노하우/Self-Host 구축 및 관리

Self-host로 구축하는 나만의 Notion 만들기 - 4부. 정기 백업

잌쿠 2025. 6. 13. 06:24

이번 4부에서는 Outline 데이터베이스와 파일을 구글 드라이브에 정기적으로 백업하는 방법을 소개합니다.
구글 드라이브를 활용해 안전하게 데이터를 보관하고, 문제가 생겼을 때 쉽게 복원할 수 있도록 준비하세요.


1. rclone 설치 및 구글 드라이브 연동

rclone 설치

curl https://rclone.org/install.sh | sudo bash

구글 드라이브 연동 설정

rclone config
  • n 입력 후 새 remote 생성
  • 이름 예: gdrive
  • 저장소 유형에서 drive 선택
  • 클라이언트 ID/비밀키는 기본값으로 엔터
  • 권한 범위는 기본(full access) 선택
  • 로컬 파일시스템에 엑세스할 필요 없으므로 No
  • 자동 인증 시 나오는 URL을 복사해 브라우저에서 로그인 후 인증
  • 인증 완료 후 리턴된 코드를 터미널에 붙여넣기
  • 설정 저장하고 종료

2. 백업 대상 및 경로 확인

Outline 데이터는 Docker 볼륨 또는 컨테이너 내부에 있습니다.

  • PostgreSQL 데이터: outline-db-data 볼륨
  • Redis 데이터: outline-redis-data 볼륨 (필요시 백업)
  • Outline 애플리케이션 관련 설정 및 첨부파일 위치도 확인 필요

아래 예시는 PostgreSQL 데이터만 백업합니다.
(볼륨을 직접 백업하려면 컨테이너를 잠시 중지하거나 덤프 방식을 사용하세요.)


3. 데이터베이스 덤프 스크립트 작성

#!/bin/bash

BACKUP_DIR=~/outline_backup
DATE=$(date +'%Y%m%d_%H%M%S')
mkdir -p $BACKUP_DIR

docker exec outline-db pg_dump -U outline outline_db > $BACKUP_DIR/outline_db_$DATE.sql
  • 위 스크립트를 backup_db.sh 로 저장 후 실행 권한 부여
chmod +x backup_db.sh

4. 백업 파일 구글 드라이브에 업로드

#!/bin/bash

BACKUP_DIR=~/outline_backup
DATE=$(date +'%Y%m%d_%H%M%S')
FILE=$BACKUP_DIR/outline_db_$DATE.sql

# 데이터베이스 덤프 실행
docker exec outline-db pg_dump -U outline outline_db > $FILE

# 구글 드라이브 업로드 (gdrive는 rclone remote 이름)
rclone copy $FILE gdrive:OutlineBackup --progress
  • 위 내용을 backup_and_upload.sh 로 저장하고 실행 권한 부여

5. 크론탭에 자동 백업 등록

crontab -e

아래 예시는 매일 새벽 2시에 자동 실행 설정입니다.

0 2 * * * /home/username/backup_and_upload.sh >> /home/username/backup.log 2>&1
  • 경로는 실제 스크립트 위치에 맞게 조정하세요.

6. 백업 확인 및 복원

  • 구글 드라이브 OutlineBackup 폴더에서 백업 파일 확인 가능
  • 복원 시, 백업 파일을 서버로 내려받아 PostgreSQL에 복원하면 됩니다.
cat outline_db_YYYYMMDD.sql | docker exec -i outline-db psql -U outline outline_db

마무리

이제 Outline 데이터를 안전하게 구글 드라이브에 정기 백업하여 데이터 손실 위험을 줄일 수 있습니다.
필요시 언제든지 백업에서 복원하세요!