Slack에서 마이그레이션
Entry, Professional, Enterprise, Enterprise Advanced 플랜에서 사용할 수 있습니다.
개요
Mattermost는 Slack에서 마이그레이션하는 안정적인 경로를 제공하여, 조직의 협업 기록을 안전한 자체 호스팅 Mattermost 환경으로 옮길 수 있게 합니다. 마이그레이션 과정은 사용자, 채널, 메시지 기록, 다이렉트 메시지, 스레드를 포함한 전체 워크스페이스를 지원하므로 팀이 중요한 맥락을 잃지 않고 업무를 이어갈 수 있습니다.
이 과정은 일반적으로 환경 준비, Slack에서 데이터 내보내기, 그 데이터를 호환 형식으로 변환하기, 그리고 Mattermost로 가져오기로 이루어집니다. Slack에서 마이그레이션하는 일은 여러 단계로 구성되며, 특히 규모가 크거나 여러 Slack 워크스페이스를 운영하는 조직에서는 복잡할 수 있습니다.
또한 Slack의 데이터 통제 정책이나 내보내기 기능은 언제든 바뀔 수 있고, Slack에 저장된 데이터를 내보낼 때 고객에게 비용을 청구할 수도 있다는 점을 고려하세요. Slack Enterprise에서 고객 지적 재산을 내보내는 협의에 대한 지원은 Mattermost 전문가에게 문의해 요청할 수 있습니다.
준비:
- 핵심 범위 설정 질문에 답합니다.
- 환경과 내보내기 관련 정보를 수집합니다.
- Mattermost 서버의 용량과 구성을 검증합니다.
- 가져오기 전에 Mattermost 환경을 백업합니다.
-
- Slack에서 내보내기를 생성합니다.
-
mmetl check slack으로 Slack 내보내기를 검증합니다.mmetl도구로 Slack 내보내기를 파싱하고 변환합니다.
-
mmctl로 변환된 아카이브를 업로드하고 처리합니다.
검증과 테스트:
- 채널과 사용자 데이터가 올바르게 들어왔는지 확인합니다.
- 데이터베이스 쿼리를 실행해 읽지 않음 상태를 정리합니다.
서비스 전환:
- 전환 계획을 사용자에게 공지합니다.
마이그레이션 일정
이 지침은 메시지, 파일, 워크스페이스 구조의 대부분을 보존하도록 설계된 최선의 노력(best effort) 마이그레이션 경로를 설명합니다. Mattermost는 과정을 간소화하는 도구와 안내를 제공하지만, 데이터 변환과 가져오기 단계에서 수동 조정이 필요한 경우가 많습니다. 마이그레이션의 성공 여부는 신중한 계획과 충분한 시간, 기술 자원, 기술 역량을 얼마나 투입하느냐에 달려 있습니다.
Slack 환경의 규모와 복잡도에 따라 전체 마이그레이션에는 며칠에서 몇 주에 이르는 집중적인 작업이 필요할 수 있습니다. 여러 워크스페이스, 방대한 메시지 기록, 많은 파일을 보유한 대규모 조직이라면 완료까지 상당한 반복과 테스트가 필요할 것으로 예상해야 합니다. 필요한 자원을 배정하고, 개발 환경에서 시험 가져오기를 수행할 시간을 확보하며, 팀 간 일정을 조율해 이 기간을 미리 계획하는 것이 중요합니다. 변환과 가져오기 단계에서 조정에 쓸 여유 시간을 확보해 두면 전환이 더 매끄러워지고 사용자에게 미치는 영향도 줄어듭니다.
준비 단계에서 마이그레이션 범위를 적절히 설정하면 처리 시간을 크게 줄이고 더 빠르게 반복할 수 있습니다. 시작하기 전에 Mattermost로 반드시 옮겨야 할 데이터가 무엇인지 신중히 검토하세요. 모든 채널이나 파일을 마이그레이션할 필요는 없으며, 정말 필요한 것에만 집중하면 처리 시간과 수작업을 크게 아낄 수 있다는 사실을 많은 조직이 확인합니다. 초기에 명확한 경계를 정해 두면 수작업과 테스트가 필요한 데이터 양이 줄어들고, 그만큼 마이그레이션 일정이 단축되며 불필요한 복잡성도 피할 수 있습니다.
조직에 Slack에서 Mattermost로의 마이그레이션 지원이 필요하다면 Mattermost 전문가와 상담하는 것을 고려하세요.
마이그레이션 단계
1. 준비
마이그레이션을 시작하기 전에 환경을 제대로 준비하는 것이 중요합니다. 꼼꼼한 준비는 처리 시간을 줄이고, 더 빠른 반복을 가능하게 하며, 가져오기 중 피할 수 있는 문제를 겪을 가능성을 낮춰 줍니다.
이 문서는 Slack 데이터를 받을 준비가 된 Mattermost 서버가 이미 배포되어 있다고 가정합니다. 그렇지 않다면 이 섹션의 권장 사항과 함께 해당하는 배포 문서를 참고해 데이터베이스와 파일 스토리지 인프라에 대해 합리적인 결정을 내리세요.
범위 정의
먼저 마이그레이션 범위를 정의하세요.
- Slack 에디션: Slack Enterprise Grid에서 마이그레이션하려면 추가 단계와 계획이 필요합니다.
- 데이터 이력: 얼마나 많은 이력을 가져올지 결정하세요. 기간을 좁게 잡으면(예: 최근 6개월) 복잡도와 처리 시간을 크게 줄일 수 있습니다.
- 내보내기 크기: 이 가이드를 따라가면서 Slack 내보내기 파일의 크기를 고려하세요. 파일 크기는 가져오기에 걸리는 시간에 직접 영향을 줍니다. 예를 들어 약 25GB 미만이면 하루 안에 끝나는 경우가 많지만, 100GB를 넘는 내보내기는 며칠이 걸릴 수 있어 반복 사이의 간격과 전체 마이그레이션 기간이 크게 늘어납니다.
- 파일 첨부: 매우 크거나 중요하지 않은 첨부 파일(예: 공개 소프트웨어 다운로드 패키지, 동영상, 오래된 미디어 자산)을 제외해 가져오기 크기를 줄이고 처리 속도를 높일 수 있는지 검토하세요.
인프라 고려 사항
가져오기를 실행하는 환경은 성능에 큰 영향을 줄 수 있습니다.
- 테스트 환경: 마이그레이션은 항상 개발 또는 스테이징 환경에서 먼저 실행하세요. 대부분의 마이그레이션은 운영 환경 가져오기에 성공하기까지 여러 번의 반복이 필요합니다.
- 운영 체제:
mmetl도구는 Linux와 macOS에서 지원됩니다. Windows는 지원되지 않으며, WSL(Windows Subsystem for Linux)은 파일 시스템 성능이 마이그레이션의 무거운 처리를 감당하기에 충분하지 않으므로 권장하지 않습니다. - 스토리지 요구 사항: 서버가 Slack 내보내기 아카이브와 완전히 압축 해제된 데이터를 모두 저장할 수 있는지 확인하세요. 모범 사례로 Slack 내보내기 크기의 최소 3배에 해당하는 서버 저장 공간을 확보할 것을 권장합니다.
- 파일 스토리지: S3 파일 스토리지로 가져오는 편이 로컬 스토리지나 NFS로 가져오는 것보다 대체로 빠릅니다. 대용량 가져오기에서는 최상의 성능을 위해 AWS S3 또는 다른 S3 호환 스토리지 서비스를 사용할 것을 권장합니다.
Mattermost 서버 고려 사항
환경을 미리 신중하게 준비하고 아래 조정을 해 두면 마이그레이션이 원활하게 진행되고 시행착오를 반복할 필요가 줄어듭니다.
- 새 서버: 가져오기는 새로 설치한 Mattermost 환경에서 가장 안정적으로 동작합니다. 기존 서버로 가져올 경우 기존 팀 위에 덮어쓰지 마세요.
- 서버 버전: 최신 기능과 수정 사항을 활용할 수 있도록 지원되는 최신 버전의 Mattermost를 실행하세요.
백업: 이미 운영 중인 Mattermost 환경으로 가져올 때는 시작 전에 Mattermost 데이터베이스와 데이터 디렉터리를 모두 백업하세요. 가져오기가 실패하면 롤백하거나 초기화해야 합니다.
- 여러 Slack 워크스페이스를 하나의 팀으로 합치는 것이 목표라면, 먼저 별도의 팀으로 가져와 결과를 검증한 뒤 mmctl로 팀 간에 채널을 옮기는 방식을 권장합니다.
구성 설정: 가져오기를 시작하기 전에 다음 설정을 조정하세요.
TeamSettings.MaxChannelsPerTeam: 마이그레이션할 채널 수보다 훨씬 큰 값으로 설정합니다.TeamSettings.MaxUsersPerTeam: 마이그레이션할 사용자 수보다 훨씬 큰 값으로 설정합니다.- Team Settings > Allow any user with an account on this server to join this team: 가져오기를 받을 팀에서 이 설정이 활성화되어 있는지 확인하세요.
EmailSettings.EnableSignUpWithEmail과EmailSettings.EnableSignInWithEmail: 둘 다true로 설정해야 합니다.FileSettings.MaxFileSize: Slack 내보내기에서 가장 큰 파일보다 크게 설정합니다.ElasticsearchSettings.EnableIndexing,ElasticsearchSettings > EnableSearching,ElasticsearchSettings.EnableAutocomplete: 성능 문제를 막기 위해 가져오기 중에는 모두false로 설정해야 합니다. 가져오기가 끝난 뒤 인덱스를 삭제하고 다시 색인한 다음 Elasticsearch를 활성화할 수 있습니다.
2. Slack 데이터 내보내기
Slack은 제품에서 데이터를 내보내는 두 가지 방법을 제공합니다.
- 공개 채널 내보내기 - 공개 채널 메시지와 파일 링크만 포함합니다. 모든 Slack 플랜에서 사용할 수 있습니다. Slack > Admin > Workspace settings > Security > Import & export data > Export에서 생성합니다.
- 전체 채널 및 대화 내보내기 - 공개 채널, 비공개 채널, DM, 그룹 메시지를 포함한 모든 메시지를 담습니다. Business+(워크스페이스 기본 소유자의 신청 승인 필요)와 Enterprise Grid 플랜에서 사용할 수 있습니다.
다음 내용이 담긴 zip 파일을 받게 됩니다.
- 채널(
channels.json) - 사용자(
users.json) - 다이렉트 메시지(
dms.json) (전체 채널 내보내기) - 비공개 채널(
groups.json) (전체 채널 내보내기) - 그룹 다이렉트 메시지(
mpims.json) (전체 채널 내보내기) - 앱 활동 로그(
integration_logs.json) - 모든 공개 채널의 게시물이 담긴 폴더
- 모든 비공개 채널의 게시물이 담긴 폴더 (전체 채널 내보내기)
- zip 파일 내용에 대한 자세한 내용은 Slack 도움말 문서를 참고하세요.
- Slack은 독점 SaaS 서비스이므로 내보내기 형식을 예고 없이 빠르게 변경할 수 있습니다.
- Slack Free 플랜의 워크스페이스는 최근 90일간의 파일 링크만 내보낼 수 있습니다.
Slack 내보내기 파일의 압축을 풀었다가 다시 압축하지 마세요. 그렇게 하면 아카이브의 디렉터리 구조가 바뀌어 가져오기 과정에서 문제가 생길 수 있습니다.
3. 내보낸 데이터를 Mattermost용으로 변환
Slack 내보내기 파일을 확보했으니, 가져오기 준비 도구 mmetl을 사용해 Mattermost 대량 가져오기 형식으로 변환해 봅시다.
사용하는 OS와 아키텍처에 맞는 최신 mmetl 릴리스를 다운로드하세요. 도구 사용법을 더 알아보려면 mmetl help를 실행하세요.
Slack 내보내기 검증
변환하기 전에 mmetl check 명령으로 Slack 내보내기의 무결성을 검증하세요.
./mmetl check slack --file <SLACK EXPORT FILE>
이 명령은 내보내기 아카이브의 구조적 문제를 점검하고 변환이나 가져오기를 실패시킬 수 있는 문제를 보고합니다.
변환 실행
아래 명령을 실행해 Mattermost 대량 가져오기 파일을 생성하세요. <TEAM-NAME>은 Mattermost의 팀 이름으로 바꿉니다. 이 이름은 한 단어의 소문자여야 합니다(팀 이름이 My Team이라면 <TEAM-NAME>은 my-team이 됩니다).
가져오기 전에 해당 팀이 Mattermost 서버에 이미 존재해야 하며, 그 팀에 Allow any user with an account on this server to join this team이 활성화되어 있어야 합니다.
./mmetl transform slack --team <TEAM-NAME> --file <SLACK EXPORT FILE> --output mattermost_import.jsonl
이 도구는 모든 사용자, 채널, 게시물이 담긴 .jsonl 파일을 출력합니다. 또한 모든 첨부 파일이 담긴 data 폴더를 생성합니다. .jsonl 파일의 이름은 무엇이든 상관없습니다. 위와 같이 --output 플래그로 원하는 이름을 지정할 수 있으며, .jsonl 파일이기만 하면 됩니다.
유용한 변환 플래그
mmetl transform slack 명령은 일반적인 마이그레이션 상황에 도움이 되는 여러 선택적 플래그를 지원합니다.
--skip-attachments/-a: 가져오기 파일에서 첨부 파일 복사를 건너뜁니다. 첨부 파일을 포함하기 전에 가져오기 과정을 테스트하며 빠르게 반복할 때 유용합니다.--allow-download/-l: URL에서 첨부 파일을 내려받도록 허용합니다.--default-email-domain <DOMAIN>: 내보내기에 사용자의 이메일이 없을 때 사용자 이름과 지정한 도메인을 조합해 생성합니다(예:--default-email-domain example.com).--skip-empty-emails: 이메일 주소가 비어 있는 사용자도 출력에 포함하도록 허용합니다. 이 경우 가져오기 전에 수동으로 수정해야 하는 유효하지 않은 가져오기 데이터가 만들어진다는 점에 유의하세요.--discard-invalid-props/-p: 속성이 유효하지 않은 게시물을 버립니다. 기본적으로 이런 게시물은 유지하되 속성 없이 가져옵니다.
변환 디버깅
mmetl transform 과정은 기본적으로 INFO 수준의 출력을 기록하는 transform-slack.log 파일을 생성합니다.
--debug 플래그와 함께 가져오기 명령을 실행하면 로그에 DEBUG 수준 항목이 추가됩니다. 이 항목들은 각 단계에 대한 더 세밀한 정보를 제공하므로 변환이 느려지거나 실패하는 지점을 파악하는 데 도움이 됩니다.
MMETL 파싱 단계
mmetl 도구로 Slack 내보내기 파일을 파싱하면 네 단계를 거칩니다. 각 단계의 로그 출력을 관찰해 진행 상황을 추적할 수 있습니다. 이 단계들을 이해하면 파싱에 걸리는 시간을 가늠하는 데 도움이 됩니다.
1. 가져오기 파일 읽기
이 단계에서 mmetl은 Slack 내보내기 파일을 처음부터 끝까지 읽습니다. 로그 예시:
{"file":"parse.go:359","level":"info","msg":"Processing file 1 of 10335: aluminum-white-lightbulb/","time":"2024-03-11T20:41:09-04:00"}
이 단계는 내보내기 아카이브의 크기에 따라 보통 5~10분 걸립니다.
2. 사용자 멘션 변환
이 단계에서 mmetl은 Slack 사용자 멘션을 Mattermost 호환 형식으로 변환합니다. 로그 예시:
{"file":"parse.go:224","level":"debug","msg":"Slack Import: converting user mentions for channel touchscreen-headphones-sleek. 1 of 400","time":"2024-03-11T20:41:10-04:00"}
대용량 가져오기에서는 이 단계에 시간이 오래 걸릴 수 있으며 몇 시간이 소요될 수도 있습니다.
3. 채널 멘션 변환
이 단계에서는 채널 참조가 갱신됩니다. 로그 예시:
{"file":"parse.go:259","level":"debug","msg":"Slack Import: converting channel mentions for channel robust-smart-home-device-matrix. 95 of 400","time":"2024-03-11T20:41:48-04:00"}
이 단계는 보통 사용자 멘션 변환에 걸리는 시간의 절반 정도에 완료됩니다.
4. 게시물 마크업 변환
마지막으로 Slack 메시지 서식이 Mattermost 호환 Markdown으로 변환됩니다. 로그 예시:
{"file":"parse.go:330","level":"debug","msg":"Slack Import: converting markdown for channel vertex-robust-vacuum. 120 of 400","time":"2024-03-11T20:41:58-04:00"}
가장 빠른 단계로, 대개 금방 끝납니다.
4. Mattermost로 데이터 가져오기
서버에서 또는 다른 컴퓨터에서 mmctl 명령을 사용해 Mattermost API를 통해 내보내기 파일을 업로드할 수 있습니다. 서버는 가져오기를 실행하기 전에 파일 저장소(예: AWS S3)에 가져오기 파일을 저장하므로, 이 경우 파일을 업로드하고 내려받는 데 시간이 소요됩니다.
이 마이그레이션은 멱등적입니다. 즉 동일한 게시물이 포함된 가져오기를 여러 번 실행해도 Mattermost에 중복 게시물이 생성되지 않습니다. 각 게시물은 Slack 인스턴스의 올바른 사용자·작성자와 created_at 값으로 가져옵니다.
Mattermost 명령줄 도구 mmctl이 설치되어 있는지 확인하세요. 이 도구로 Mattermost API와 통신하는 다양한 작업을 수행할 수 있습니다. 또한 도구의 인증을 구성해야 합니다.
서버로 업로드할 파일을 준비하려면 .jsonl 파일과 data 폴더를 하나의 zip 파일로 묶어야 합니다.
zip -r mattermost-bulk-import.zip data mattermost_import.jsonl
업로드하기 전에 로컬에서 가져오기 파일을 검증하세요. 서버에 업로드하지 않고도 파일 구조와 내용을 점검할 수 있습니다.
mmctl import validate ./mattermost-bulk-import.zip
그런 다음 zip 파일을 Mattermost 서버로 업로드합니다. 이 파일은 매우 클 수 있어 서버로 옮기는 일이 까다로울 수 있습니다. 이 단계에는 두 가지 주요 방법이 있습니다.
mmctl도구를 사용할 수 있습니다.mmctl import upload ./mattermost-bulk-import.zip- 또는 파일을
data/import아래 데이터 디렉터리로 직접 옮기고 고유한 이름을 지정할 수 있습니다.
사용 가능한 가져오기 목록을 보려면 다음 명령을 실행하세요.
mmctl import list available
가져오기를 처리하려면 다음 명령을 실행하세요. <IMPORT FILE NAME>은 mmctl import list available 명령에서 얻은 이름으로 바꿉니다.
mmctl import process <IMPORT FILE NAME>
마지막으로 다음 명령을 실행해 가져오기 작업의 상태를 확인하세요. 작업 상태가 pending으로 표시되면 잠시 기다렸다가 명령을 다시 실행하세요. 오류 메시지를 확인하려면 --json 플래그가 필요합니다. <JOB ID>는 mmctl import job list 명령에서 얻은 id로 바꿉니다.
mmctl import job show <JOB ID> --json
가져오기 디버깅
mmctl import job show 명령으로 발생한 관련 오류를 확인할 수 있습니다.
읽지 않은 채널과 스레드 문제 해결
가져오기 후 모든 메시지가 사용자에게 읽지 않은 상태로 표시될 수 있습니다. 이 문제를 해결하려면 Mattermost 데이터베이스에 다음 SQL 쿼리를 직접 실행하세요.
begin;
UPDATE channelmembers
SET
msgcount = channels.totalmsgcount,
lastupdateat = channels.lastpostat,
lastviewedat = channels.lastpostat,
msgcountroot = channels.totalmsgcountroot
FROM channels
WHERE channelmembers.channelid = channels.id;
INSERT INTO preferences (UserId, Category, Name, Value)
SELECT
cm.userid,
'channel_approximate_view_time',
cm.channelid,
cm.lastupdateat
FROM
channelmembers cm
ON CONFLICT (userid, category, name)
DO UPDATE SET
Value = EXCLUDED.Value;
update preferences
set value = false
where category = 'direct_channel_show';
update preferences
set value = false
where category = 'group_channel_show';
commit;
임시 이메일 처리
가져오기 과정에서 Slack의 이메일과 사용자 이름은 일치하는 기존 계정이 없을 때 Mattermost 계정을 만드는 데 사용됩니다. Slack 내보내기 아카이브에 이메일이 없으면 임시 값이 생성되며 시스템 관리자가 이를 수동으로 수정해야 합니다. 관리자는 가져오기 전에 최종 가져오기 jsonl 파일에서 이메일 속성에 @example.com이 들어 있는 user 줄을 검색해 누락된 정보를 확인하고 해결할 것을 권장합니다.
이메일 인증 동작
Slack 가져오기 중 이메일 인증 과정은 누가 가져오기를 수행하는지에 따라 달라집니다.
시스템 관리자가 수행하는 가져오기:
- 가져오기 과정에서 이메일 주소가 자동으로 인증됩니다.
- 사용자는 즉시 Password Reset(비밀번호 재설정) 기능으로 비밀번호를 설정할 수 있습니다.
- 비밀번호 재설정 전에 별도의 이메일 인증 단계가 필요하지 않습니다.
- Slack 사용자의 이메일 주소가 기존 Mattermost 계정과 일치하면, 새 계정이 생성되는 대신 해당 사용자가 기존 계정에 추가됩니다.
관리자가 아닌 사용자가 수행하는 가져오기:
- 가져오기 후에도 이메일 주소가 인증되지 않은 상태로 남습니다.
- 사용자는 비밀번호를 재설정하기 전에 먼저 이메일 주소를 인증해야 합니다.
- 계정에 접근하기 전에 추가 이메일 인증 단계가 필요합니다.
- Slack 사용자의 이메일 주소가 기존 Mattermost 계정과 일치하면 해당 사용자는 가져오지 않습니다.
계정 활성화
Slack 사용자는 Slack에서 사용하던 이메일 주소로 Mattermost의 Password Reset 화면에서 새 비밀번호를 설정해 Mattermost 계정을 활성화하거나 계정에 접근합니다. 사용자 인증을 LDAP 또는 SAML로 마이그레이션하는 방법에 대한 안내를 참고하세요.
- 시스템 관리자가 수행한 가져오기의 경우: 사용자는 즉시 Password Reset 기능을 사용할 수 있습니다(이메일 인증이 필요하지 않습니다).
- 관리자가 아닌 사용자가 수행한 가져오기의 경우: 사용자는 먼저 이메일 주소를 인증한 다음 Password Reset 기능을 사용해야 합니다.
- 로그인하고 나면 Mattermost 사용자는 Slack에서 가져온 공개 채널의 이전 Slack 메시지에 접근할 수 있습니다.
FAQ
Slack Enterprise Grid에서 추가로 고려할 사항은 무엇인가요?
Slack Enterprise Grid는 여러 워크스페이스를 하나의 관리 체계로 묶으며, 그에 따라 내보내기도 그 복잡성을 그대로 반영합니다. Enterprise Grid 내보내기는 모든 워크스페이스와 공유 채널이 담긴 단일 아카이브입니다.
Mattermost는 팀 간 공유 채널을 지원하지 않으므로 Slack Shared Channels는 Mattermost의 단일 팀에 매핑해야 합니다. 이 매핑은 Slack에서 원래 소속 팀을 파악한 뒤 mmetl에서 사용할 team.json 매핑 파일을 만들어 구성합니다. 팀 ID를 식별하고 매핑하는 데 수작업이 필요하므로 Enterprise Grid 마이그레이션은 단일 워크스페이스 마이그레이션보다 대체로 시간이 더 걸립니다. 이 단계를 성공적으로 마칠 수 있도록 추가 시간과 자원을 계획하세요.
내보내기 구조
최상위에는 Slack 워크스페이스를 가로지르는 공유 채널이 있고, /teams/ 아래에는 채널·사용자 파일 같은 워크스페이스별 데이터가 있습니다. 일반적인 구조는 다음과 같습니다.
Enterprise Grid Export/
├── channel1/
│ ├── 2023-01-01.json
│ └── 2023-01-02.json
├── channel2/
│ ├── 2023-05-01.json
│ └── 2023-05-02.json
├── teams/
│ ├── team1/
│ │ ├── channel3/
│ │ │ ├── 2023-05-01.json
│ │ │ └── 2023-05-02.json
│ │ ├── channels.json
│ │ ├── mpims.json
│ │ ├── dms.json
│ │ ├── users.json
│ │ └── groups.json
│ └── team2/
│ ├── channel4/
│ │ ├── 2023-05-01.json
│ │ └── 2023-05-02.json
│ ├── channels.json
│ ├── mpims.json
│ ├── dms.json
│ ├── users.json
│ └── groups.json
├── channels.json
├── org_users.json
├── mpims.json
├── dms.json
└── groups.json
공유 채널을 Mattermost 팀에 매핑
Slack에서 전체 Enterprise Grid 내보내기를 다운로드합니다.
각 공유 채널이 Mattermost의 어디에 속하는지 확인하려면 각 공유 채널의 첫 게시물에서
team속성을 찾으세요. 이team값은 해당 채널을 Slack의 원래 워크스페이스와 연결해 줍니다. 가져오기 후 각 공유 채널이 Mattermost에서 위치할 곳이 바로 여기입니다.{ "client_msg_id": "", "type": "", "text": "", "user": "U1", "ts": "1695219722.430309", "blocks": [ ], "team": "team1", "user_team": "team1", "source_team": "team1", "user_profile": { } },위에서 찾은 각
team속성에 Slack 팀 ID를 매핑하는teams.json파일을 만듭니다. 예시는 다음과 같습니다.{ "T0001" : "team1", "T0002" : "team2" }mmetl grid-transform명령을 실행해 Enterprise Grid 내보내기를 팀별 파일로 분할합니다../mmetl grid-transform -f slackexport.zip -t teams.json
이 과정은 teams.json에 정의된 팀마다 새 아카이브를 생성합니다. 분할이 끝나면 각 파일에 대해 표준 Mattermost 가져오기 과정을 이어서 진행할 수 있습니다.
Mattermost로 마이그레이션할 수 없는 Slack 기능이 있나요?
Slack 가져오기 과정은 메시지, 파일, 채널, 사용자 같은 핵심 협업 데이터를 보존하는 데 중점을 둡니다. 다만 일부 Slack 기능은 Mattermost 제품에서 지원되지 않으므로 이 문서의 가져오기 도구로는 마이그레이션되지 않습니다.
- Slack 앱과 연동: 설치된 앱, 봇, 슬래시 명령, 웹훅, 워크플로 빌더를 비롯한 연동 기능은 마이그레이션되지 않습니다. Slack이 지원하는 대부분의 연동은 Mattermost의 연동 및 자동화 기능으로 다시 구성할 수 있습니다.
- 즐겨찾기한 대화: 즐겨찾기한 대화는 보존되지 않습니다.
- 사용자 그룹: Slack의 사용자 그룹은 보존되지 않지만, Mattermost의 커스텀 그룹 기능으로 다시 만들 수 있습니다.
- 스레드 대화: Slack 스레드는 대부분 지원되지만, Mattermost와 Slack의 스레드 동작 방식이 달라 일부 스레드 관계는 보존되지 않을 수 있습니다.
- Canvases: Canvases는 Mattermost에서 지원되지 않으며 마이그레이션되지 않습니다.
- 사용자 상태와 프로필: 사용자 상태(온라인/자리 비움), 프로필 사진, 커스텀 프로필 필드는 이전되지 않습니다. 사용자는 Mattermost에서 프로필을 직접 업데이트해야 합니다.
- 비활성화된 사용자의 채널 멤버십: 비활성화되었거나 삭제된 Slack 사용자는 Mattermost로 마이그레이션되지 않습니다.
이런 제약 때문에 가져오기 후에는 특히 워크플로와 연동을 중심으로 일부 수동 재구성이 필요한 것이 일반적입니다. Slack 마이그레이션에 대해서는 Mattermost 전문가의 지원을 받을 수 있습니다.