Backup discourse from the command line

일부 AI의 도움으로 discourse 명령어의 하위 명령어에 대한 포괄적인 목록을 정리했습니다.
discourse CLI(script/discourse를 통해 Thor gem으로 구현됨)는 백업 및 복구, 사이트 관리 및 모드, 데이터베이스 유틸리티, **데이터 마이그레이션(가져오기/내보내기)**으로 분류된 13개의 핵심 하위 명령어를 제공합니다.


명령어 빠른 참조

카테고리 하위 명령어 주요 기능
백업 및 복구 backup 전체 또는 데이터베이스 전용 백업 아카이브 생성.
restore .tar.gz 백업 파일을 인스턴스로 복구.
enable_restore 복구 명령 실행 권한 부여.
disable_restore 복구 수행 권한 취소.
rollback 실패한 복구 후 데이터베이스 상태를 되돌림.
사이트 모드 enable_readonly 사이트 전체에 대한 임시 읽기 전용 모드 전환.
disable_readonly 읽기 전용 모드 해제하여 정상적인 사이트 쓰기 복구.
request_refresh 모든 활성 연결된 클라이언트에 브라우저 새로고침 프롬프트 트리거.
데이터베이스 작업 remap 데이터베이스 테이블 전체에서 글로벌 텍스트 검색 및 치환 수행.
데이터 마이그레이션 export_category 단일 카테고리, 해당 토픽 및 관련 사용자 내보내기.
import_category 카테고리 아카이브를 현재 포럼으로 가져오기.
export_topics ID를 기반으로 특정 토픽 및 작성자/답변자 계정 내보내기.
import_topics 토픽 아카이브를 현재 포럼으로 가져오기.

상세 하위 명령어 문서

1. 백업 및 복구 명령어

discourse backup [FILENAME]

  • 설명: 포럼 데이터베이스와 자산의 완전한 백업을 생성합니다.

  • 플래그:

  • --sql-only: (불리언, 기본값: false) 로컬 업로드 파일은 건너뛰고 PostgreSQL 데이터베이스만 덤프합니다.

  • --s3-uploads: (불리언, 기본값: false) S3에 저장된 자산을 백업 아카이브에 포함하도록 강제합니다(--sql-only가 설정된 경우 무시됨).

  • 예시:

discourse backup
discourse backup --sql-only

discourse restore [FILENAME]

  • 설명: /var/www/discourse/public/backups/default에 위치한 로컬 .tar.gz 아카이브에서 포럼 백업을 복구합니다.
  • 선행 조건: 먼저 discourse enable_restore를 실행해야 합니다.
  • 예시:
discourse restore discourse-2026-07-22-120000-v2026xxxx.tar.gz

discourse enable_restore & discourse disable_restore

  • 설명: 콘솔/웹 기반 복구 작업을 허용하거나 제한하는 애플리케이션 플래그를 전환합니다.
  • 사용 순서:
discourse enable_restore
discourse restore <filename>
discourse disable_restore

discourse rollback

  • 설명: 실패한 복구 실행 이전 시점으로 데이터베이스 스키마와 상태를 되돌립니다.

2. 사이트 상태 및 클라이언트 제어

discourse enable_readonly & discourse disable_readonly

  • 설명: Redis의 READONLY_MODE_KEY를 설정하거나 해제합니다.
  • 상세 정보:
  • 사용자가 사이트를 읽을 수 있도록 유지하면서 데이터베이스 쓰기를 동결합니다.
  • 터미널 세션이 충돌하더라도 사이트가 영구적으로 잠금되지 않도록 활성 상태 동안 갱신되는 짧은 수명(TTL) 루프를 사용합니다.

discourse request_refresh

  • 설명: MessageBus를 통해 시스템 메시지를 전송하여 온라인 웹 세션이 웹 페이지를 다시 로드하도록 지시합니다. 자산 업데이트나 글로벌 테마 변경 후 배포 시 유용합니다.

3. 데이터베이스 재매핑

discourse remap [OPTIONS] FROM TO

  • 설명: 데이터베이스의 텍스트 컬럼에서 직접 문자열 검색 및 치환을 수행합니다. 도메인 이름, CDN 경로 또는 이미지 업로드 접두사를 업데이트할 때 중요합니다.

  • 플래그:

  • --global: (불리언) 표준 콘텐츠 테이블이 아닌 모든 테이블을 스캔하고 재매핑합니다.

  • --regex: (불리언) FROM 매개변수를 리터럴 문자열이 아닌 정규 표현식으로 평가합니다.

  • 예시:

discourse remap "old-domain.com" "new-domain.com"
discourse remap --global "/uploads/default/" "/cdn-uploads/"

4. 선택적 데이터 가져오기 및 내보내기

discourse export_category [CATEGORY_ID]

  • 설명: 모든 중첩된 토픽, 게시물 및 참여 사용자 프로필을 포함하여 단일 카테고리를 JSON 아카이브 파일로 직렬화합니다.

discourse import_category [FILE_PATH]

  • 설명: export_category로 생성된 아카이브를 읽고 카테고리 데이터를 대상 인스턴스에 병합합니다.

discourse export_topics [TOPIC_IDS...]

  • 설명: 하나 이상의 공백으로 구분된 토픽 ID를 받아 토픽, 게시물 및 관련 사용자 계정을 내보냅니다.
  • 예시:
discourse export_topics 102 105 210

discourse import_topics [FILE_PATH]

  • 설명: export_topics로 생성된 JSON 아카이브를 대상 Discourse 인스턴스로 가져옵니다.
1개의 좋아요