대량 내보내기 도구
Entry, Professional, Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
한 Mattermost 인스턴스의 데이터를 다른 인스턴스로 옮기는 작업은 대량 적재 기능을 사용해 데이터를 JSONL 파일로 내보내는 것에서 시작합니다. 개념 증명(PoC)용 서버를 만든 뒤 운영용 서버를 별도로 구축했고, 이제 PoC 인스턴스의 기록을 유지하고 싶을 때 이 도구가 유용합니다.
내보낼 수 있는 데이터 유형은 다음과 같습니다.
- 팀
- 채널(공개, 비공개, 다이렉트)
- 메시지(일반 메시지, 답글이 아닌 메시지, 다이렉트 메시지)
- 스레드 대화와 메시지 답글
- 메시지 반응
- 사용자
- 고정 메시지와 저장한 메시지를 포함한 사용자 환경 설정
- 사용자의 팀 멤버십
- 사용자의 채널 멤버십
- 사용자의 알림 환경 설정
- 커스텀 이모지
- 읽음/읽지 않음 상태를 포함한 다이렉트 메시지 및 그룹 메시지 채널
- 역할
- 권한 스킴
- 봇 사용자
서버의 특정 영역만 내보내기, 추가 유형의 게시물 내보내기, 파일 첨부, 웹훅, 봇 메시지 같은 데이터 유형에 대한 설정은 아직 지원되지 않습니다. 삭제된 객체도 아직 지원되지 않습니다.
내보내기 도구에 속성이나 객체를 추가로 요청하려면 기능 아이디어 포럼에 기능 요청을 등록해 주세요.
데이터 대량 내보내기
mmctl 사용
- 첨부 파일을 포함한 전체 내보내기 파일을 생성하려면 mmctl export create -- attachments 명령을 실행합니다. 자세한 내용은 Mattermost 데이터 마이그레이션 문서를 참고하세요.
- 작업이 실행되는 동안 mmctl export job show 명령으로 상태를 확인할 수 있습니다.
내보내기 작업 상태가 성공으로 표시되면 다음을 수행합니다.
- mmctl export list 명령을 실행해 완료된 내보내기 파일의 이름을 확인합니다.
- mmctl export download 명령을 실행해 내보내기 파일을 로컬 컴퓨터로 다운로드합니다.
CLI 사용
Mattermost v6.0부터 이 명령은 더 이상 사용되지 않으며, Mattermost에서 데이터를 내보내는 지원 방식은 mmctl export 명령입니다.
내보내기 명령은 CLI에서 실행됩니다. 이 명령은 Mattermost 데이터베이스의 모든 정보에 접근할 수 있는 권한을 가집니다.
내보내기 명령을 실행하려면 다음을 수행합니다.
- Mattermost 서버가 설치된 디렉터리로 이동합니다. Mattermost를 기본값으로 설치했다면 디렉터리는
/opt/mattermost입니다. 다음 명령을 실행해 서버의 모든 팀에서 데이터를 추출합니다. 파일 이름을 변경할 수 있고, 절대 경로나 상대 경로를 지정해 파일을 내보낼 위치를 정할 수 있습니다.
sudo -u mattermost bin/mattermost export bulk file.json --all-teamssudo -u mattermost bin/mattermost export bulk /home/user/bulk_data.json --all-teams- 지정한 위치에서 파일을 가져옵니다.
모든 Mattermost 대량 내보내기 데이터 파일은 첫 줄이 Version 객체로 시작합니다. 이 값은 내보낸 데이터와 호환되는 Mattermost 대량 가져오기 파일 형식의 버전을 나타냅니다.
Version 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| type | string | 문자열 "version"입니다. |
| version | number | 숫자 1입니다. |
| info | object | 선택적인 VersionInfo 객체입니다. |
VersionInfo 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| generator | string | 이 내보내기를 생성한 도구의 이름입니다. 널리 알려진 도구는 다음과 같습니다. Mattermost 서버는 "mattermost-server". Slack 내보내기 변환기 "mmetl"은 "mmetl". |
| version | string | 이 내보내기를 생성한 도구의 버전입니다. 공백으로 구분된 여러 버전 정보가 들어 있을 수 있습니다. 첫 번째 값은 시맨틱 버전이어야 합니다. "7.6.0 (29bb1e53ef5a439c73065f47de2972f9bbcb09a4, enterprise: true)"가 그런 버전 문자열의 예입니다. |
| created | string | 파일 생성 타임스탬프입니다. RFC 3339 타임스탬프 형식이어야 합니다. 나노초 부분은 선택 사항입니다. "2022-11-22T16:40:51.019582328+01:00" |
| additional | any | 생성 도구가 파일 헤더에 포함하려는 추가 정보입니다. 생략할 수 있습니다. 각 줄의 크기는 수 MiB로 제한된다는 점에 유의하세요. |
Team 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| name | string | 팀 이름입니다. |
| display_name | string | 팀의 표시 이름입니다. |
| type | string | 팀의 유형입니다. 다음 값 중 하나를 가집니다. 공개 팀은 "O" 초대 전용 팀은 "I". |
| description | string | 팀 설명입니다. |
| allow_open_invite | bool | 공개 초대를 허용할지 여부입니다. 다음 값 중 하나를 가집니다. "true" "false" |
| scheme | string | 이 팀에 적용되는 권한 스킴의 이름입니다. |
Channel 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| team | string | 이 채널이 속한 팀의 이름입니다. |
| name | string | 채널의 이름입니다. |
| display_name | string | 채널의 표시 이름입니다. |
| type | string | 채널의 유형입니다. 다음 값 중 하나를 가집니다. 공개 채널은 "O". 비공개 채널은 "P". |
| header | string | 채널 헤더입니다. |
| purpose | string | 채널 목적입니다. |
| scheme | string | 이 팀에 적용되는 권한 스킴의 이름입니다. |
User 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| username | string | 사용자의 사용자 이름입니다. 사용자의 고유 식별자입니다. |
| string | 사용자의 이메일 주소입니다. | |
| auth_service | string | 이 사용자 계정에 사용된 인증 서비스입니다. 사용자/비밀번호 인증에서는 이 필드가 없습니다. "gitlab" - GitLab 인증. "ldap" - LDAP 인증(Enterprise 및 Professional) "saml" - 일반 SAML 기반 인증(Enterprise) "google" - Google OAuth 인증(Enterprise) "entra id" - Microsoft Entra ID OAuth 인증(Enterprise) |
| auth_data | string | auth_service를 사용하는 경우의 인증 데이터입니다. 값은 지정된 auth_service에 따라 달라집니다. 각 auth_service별로 다음 필드에서 데이터를 가져옵니다. "gitlab" - GitLab 인증 데이터에 제공된 Id 속성의 값. "ldap" - Mattermost LDAP 구성에서 "ID Attribute"로 지정한 LDAP 속성의 값. "saml" - SAML 이메일 주소 속성의 값. "google" - OAuth Id 속성의 값. "office365" - OAuth Id 속성의 값. |
| nickname | string | 사용자의 별명입니다. |
| first_name | string | 사용자의 이름입니다. |
| last_name | string | 사용자의 성입니다. |
| position | string | 사용자의 직책입니다. |
| roles | string | 사용자의 역할입니다. |
| locale | string | 사용자의 지역화 설정입니다. |
| use_markdown_preview | bool | 사용자가 메시지 입력창에서 마크다운 미리보기를 활성화했다면 "true"입니다. |
| use_formatting | bool | 사용자가 링크, 이모지, 텍스트 스타일, 줄 바꿈에 대한 게시물 서식을 활성화했다면 "true"입니다. |
| show_unread_section | string | 사용자가 채널 사이드바 상단에 읽지 않은 메시지 표시를 활성화했다면 "true"입니다. |
| theme | string | 사용자의 테마입니다. Mattermost 테마 문자열 형식입니다. |
| military_time | string | 사용자가 24시간제를 활성화했다면 "true", 12시간제를 사용한다면 "false"입니다. |
| collapse_previews | string | 사용자가 기본적으로 링크 미리보기를 접는다면 "true", 기본적으로 펼친다면 "false"입니다. |
| message_display | string | 사용자가 선호하는 메시지 표시 스타일입니다. 표준 스타일이면 "clean", 간결한 스타일이면 "compact"입니다. |
| channel_display_mode | string | 사용자가 채널 메시지를 화면 전체 너비로 표시하면 "full", 고정 너비의 가운데 정렬 블록을 사용하면 "centered"입니다. |
| tutorial_step | string | "1", "2", "3"은 사용자가 시작할 튜토리얼 단계를 나타냅니다. "999"는 튜토리얼을 건너뜁니다. |
| email_interval | string | 대량 가져오기 중 사용할 이메일 배치 전송 간격입니다. |
| delete_at | int64 | 사용자가 비활성화된 시점의 타임스탬프입니다. |
| teams | array | 사용자가 소속된 팀입니다. UserTeamMembership 객체의 배열입니다. |
| notify_props | object | UserNotifyProps 객체로 정의되는 사용자의 알림 환경 설정입니다. |
UserNotifyProps 객체
이 객체는 User 객체의 구성 요소입니다.
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| desktop | string | 데스크톱 알림 전송에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "all" - 모든 활동에 대해. "mention" - 멘션에 대해서만. "none" - 사용하지 않음. |
| desktop_sound | string | 데스크톱 알림음 재생 여부에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "true" - 소리를 재생합니다. "false" - 소리를 재생하지 않습니다. |
| string | 이메일 알림에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "true" - 이메일 알림을 즉시 보냅니다. "false" - 이메일 알림을 보내지 않습니다. | |
| mobile | string | 모바일 푸시 알림 전송에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "all" - 모든 활동에 대해. "mention" - 멘션에 대해서만. "none" - 사용하지 않음. |
| mobile_push_status | string | 푸시 알림이 발생하는 시점에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "online" - 온라인, 자리 비움, 오프라인일 때. "away" - 자리 비움 또는 오프라인일 때. "offline" - 오프라인일 때. |
| channel | string | @all, @channel, @here가 멘션을 발생시키는지에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "true" - 멘션이 발생합니다. "false" - 멘션이 발생하지 않습니다. |
| comments | string | 답글 멘션 알림에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "any" - 사용자가 시작했거나 참여한 답글 스레드의 메시지에 알림을 발생시킵니다. "root" - 사용자가 시작한 스레드의 메시지에 알림을 발생시킵니다. "never" - 사용자가 멘션되지 않는 한 답글 스레드의 메시지에 알림을 발생시키지 않습니다. |
| mention_keys | string | 멘션을 발생시키는 대소문자 구분 없는 사용자 지정 단어에 대한 환경 설정입니다. 단어는 쉼표로 구분합니다. |
UserTeamMembership 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| name | string | 이 사용자가 소속된 팀의 이름입니다. |
| roles | string | 이 팀 안에서 사용자가 가지는 역할입니다. |
| theme | string | 이 팀에 대한 사용자의 테마입니다. Mattermost 테마 문자열 형식입니다. |
| channels | array | 이 팀 안에서 사용자가 속한 채널입니다. UserChannelMembership 객체의 배열로 표시됩니다. |
UserChannelMembership 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| name | string | 이 사용자가 속한, 상위 팀 안의 채널 이름입니다. |
| roles | string | 이 채널 안에서 사용자가 가지는 역할입니다. |
| notify_props | object | ChannelNotifyProps 객체로 정의되는, 이 채널에서 이 사용자의 알림 환경 설정입니다. |
| favorite | boolean | 이 사용자가 해당 채널을 즐겨찾기로 표시했는지 여부입니다. 다음 값 중 하나를 가집니다. "true" - 예. "false" - 아니요. |
| mention_count | int64 | ChannelMentionCount 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
| mention_count_root | int64 | ChannelMentionCountRoot 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
| urgent_mention_count | int64 | UrgendMentionCount 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
| msg_count | int64 | MsgCount 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
| msg_count_root | int64 | MsgCountRoot 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
| last_viewed_at | int64 | LastViewedAt 객체로 정의되는, 이 채널에서 이 사용자의 멘션 환경 설정입니다. |
ChannelNotifyProps 객체
이 객체는 ChannelMembership 객체의 구성 요소입니다.
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| desktop | string | 데스크톱 알림 전송에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "default" - 전역 기본값. "all" - 모든 활동에 대해. "mention" - 멘션에 대해서만. "none" - 사용하지 않음. |
| mobile | string | 모바일 알림 전송에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "default" - 전역 기본값. "all" - 모든 활동에 대해. "mention" - 멘션에 대해서만. "none" - 사용하지 않음. |
| mark_unread | string | 채널을 읽지 않음으로 표시하는 방식에 대한 환경 설정입니다. 다음 값 중 하나를 가집니다. "all" - 모든 읽지 않은 메시지에 대해. "mention" - 멘션에 대해서만. |
Post 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| team | string | 이 게시물이 속한 팀의 이름입니다. |
| channel | string | 이 게시물이 속한 채널의 이름입니다. |
| user | string | 이 게시물을 작성한 사용자의 사용자 이름입니다. |
| message | string | 게시물에 담긴 메시지입니다. |
| props | object | 게시물의 props입니다. 연동 기능과 봇 게시물이 사용하는 추가 서식 정보가 들어 있습니다. 자세한 설명은 메시지 첨부 문서를 참고하세요. |
| create_at | int | 게시물의 타임스탬프입니다. Unix epoch 이후 밀리초 단위입니다. |
| reactions | array | 이 게시물에 달린 이모지 반응입니다. Reaction 객체의 배열입니다. |
Reply 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| user | string | 이 답글을 작성한 사용자의 사용자 이름입니다. |
| message | string | 답글에 담긴 메시지입니다. |
| create_at | int | 답글의 타임스탬프입니다. Unix epoch 이후 밀리초 단위입니다. |
Reaction 객체
이 객체는 Post 객체의 구성 요소입니다.
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| user | string | 이 답글을 작성한 사용자의 사용자 이름입니다. |
| emoji_name | string | 반응에 사용된 이모지입니다. |
| create_at | int | 답글의 타임스탬프입니다. Unix epoch 이후 밀리초 단위입니다. |
Emoji 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| name | string | 이모지 이름입니다. |
| image | string | 이 이모지의 이미지 파일 경로입니다(절대 경로 또는 현재 작업 디렉터리 기준 상대 경로). |
DirectChannel 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| members | array | 채널 멤버 목록입니다. |
| favorited_by | array | 해당 다이렉트 채널을 즐겨찾기로 등록한 채널 멤버 목록입니다. |
| header | string | 채널 헤더입니다. |
DirectPost 객체
| 필드 이름 | 타입 | 설명 |
|---|---|---|
| user | string | 이 게시물을 작성한 사용자의 사용자 이름입니다. |
| message | string | 게시물에 담긴 메시지입니다. |
| create_at | int | 게시물의 타임스탬프입니다. Unix epoch 이후 밀리초 단위입니다. |