InfoGrab Docs

Slack에서 마이그레이션

요약

Mattermost는 Slack에서 신뢰할 수 있는 마이그레이션 경로를 제공하여, 조직의 협업 기록을 안전하고 자체 호스팅된 Mattermost 환경으로 가져올 수 있도록 합니다. 이 프로세스에는 일반적으로 환경 준비, Slack에서 데이터 내보내기, 해당 데이터를 호환 가능한 형식으로 변환, Mattermost로 가져오기 등이 포함됩니다.

개요#

Mattermost는 Slack에서 신뢰할 수 있는 마이그레이션 경로를 제공하여, 조직의 협업 기록을 안전하고 자체 호스팅된 Mattermost 환경으로 가져올 수 있도록 합니다. 마이그레이션 프로세스는 사용자, 채널 및 메시지 기록, 다이렉트 메시지, 스레드를 포함한 전체 워크스페이스를 지원하므로 팀이 중요한 컨텍스트를 잃지 않고 계속 작업할 수 있습니다.

이 프로세스에는 일반적으로 환경 준비, Slack에서 데이터 내보내기, 해당 데이터를 호환 가능한 형식으로 변환, Mattermost로 가져오기 등이 포함됩니다. Slack에서의 마이그레이션은 여러 단계를 거치는 복잡한 프로세스로, 특히 대규모 조직이나 여러 Slack 워크스페이스를 가진 조직의 경우 더욱 복잡할 수 있습니다.

또한 Slack의 데이터 제어 정책이나 내보내기 기능은 언제든지 변경될 수 있으며, Slack에 저장된 데이터를 내보내는 데 비용을 청구할 수도 있다는 점을 고려하세요. Slack Enterprise에서 고객 IP 내보내기 협상 지원은 Mattermost 전문가에게 문의하여 요청할 수 있습니다.

  1. 준비:
    • 주요 범위 파악 질문에 답변합니다.
    • 환경 및 내보내기 세부 정보를 수집합니다.
    • Mattermost 서버 용량과 구성을 검증합니다.
    • 가져오기 전에 Mattermost 환경을 백업합니다.
  2. Slack 데이터 내보내기:
    • Slack에서 내보내기를 생성합니다.
  3. Mattermost를 위한 내보내기 변환:
    • mmetl check slack을 사용하여 Slack 내보내기를 검증합니다.
    • mmetl 도구를 사용하여 Slack 내보내기를 파싱하고 변환합니다.
  4. Mattermost로 가져오기:
    • mmctl을 사용하여 변환된 아카이브를 업로드하고 처리합니다.
  5. 검증 및 테스트:
    • 채널 및 사용자 데이터가 올바르게 가져와졌는지 확인합니다.
    • 데이터베이스 쿼리를 실행하여 읽지 않은 상태를 수정합니다.
  6. 가동 시작:
    • 사용자에게 전환 계획을 전달합니다.

마이그레이션 일정#

이 지침은 메시지, 파일 및 워크스페이스 구조의 대부분을 보존하도록 설계된 최선의 노력 마이그레이션 경로를 개략적으로 설명합니다. Mattermost는 프로세스를 간소화하는 데 도움이 되는 도구와 지침을 제공하지만, 데이터 변환 및 가져오기 단계에서 수동 조정이 필요한 경우가 많습니다. 성공적인 마이그레이션은 신중한 계획과 충분한 시간, 기술 리소스 및 기술 역량을 노력에 투입하는 것에 달려 있습니다.

Slack 환경의 규모와 복잡성에 따라 전체 마이그레이션은 며칠에서 여러 주의 전담 노력이 필요할 수 있습니다. 여러 워크스페이스, 방대한 메시지 기록 및 많은 파일을 가진 대규모 조직은 완료 전에 상당한 반복 작업과 테스트가 필요할 것으로 예상해야 합니다. 필요한 리소스를 할당하고, 개발 환경에서 시범 가져오기 시간을 계획하며, 팀 간에 조율하여 이 일정을 미리 계획하는 것이 중요합니다. 변환 및 가져오기 단계에서 조정을 위한 여분의 시간을 확보하면 보다 원활한 전환을 보장하고 사용자 혼란을 줄이는 데 도움이 됩니다.

준비 단계에서 적절한 마이그레이션 범위를 설정하면 처리 시간을 크게 줄이고 더 빠른 반복을 가능하게 합니다. 시작하기 전에, Mattermost로 가져올 데이터가 무엇인지 신중하게 고려하세요. 많은 조직에서 모든 채널이나 파일을 마이그레이션할 필요가 없다는 것을 발견하며, 진정으로 필요한 것에만 집중하면 상당한 처리 시간과 수동 노력을 절약할 수 있습니다. 초기에 명확한 경계를 설정하면 수동 개입과 테스트가 필요한 데이터의 양을 최소화하여 마이그레이션 일정을 단축하고 불필요한 복잡성을 방지하는 데 도움이 됩니다.

Note

조직에서 Slack에서 Mattermost로의 마이그레이션에 대한 지원이 필요한 경우 Mattermost 전문가와 상담하는 것을 고려하세요.

마이그레이션 단계#

1. 준비#

마이그레이션을 시작하기 전에 환경을 적절히 준비하는 것이 중요합니다. 철저한 준비는 처리 시간을 줄이고, 더 빠른 반복을 가능하게 하며, 가져오기 중 피할 수 있는 문제가 발생할 가능성을 최소화합니다.

이 문서는 Slack 데이터를 받을 준비가 된 Mattermost Server가 이미 배포되어 있다고 가정합니다. 그렇지 않은 경우, 지원하는 데이터베이스 및 파일 스토리지 인프라에 대한 정보에 입각한 결정을 내리기 위해 이 섹션의 권장 사항을 적절한 배포 문서와 함께 고려하세요.

범위 정의#

마이그레이션 범위를 정의하는 것으로 시작합니다:

  • Slack 에디션: Slack Enterprise Grid에서의 마이그레이션에는 추가 단계 및 계획이 필요합니다.
  • 데이터 기록: 가져올 기록의 양을 결정합니다. 더 짧은 기간(예: 최근 6개월)만 가져오면 복잡성과 처리 시간을 크게 줄일 수 있습니다.
  • 내보내기 크기: 이 가이드를 진행하면서 Slack 내보내기 파일의 크기를 고려하세요. 파일 크기는 가져오기 소요 시간에 직접적인 영향을 미칩니다 - 예를 들어 ~25 GB 미만의 파일은 하루 내에 완료되는 경우가 많지만, 100 GB 이상의 내보내기는 여러 날이 걸릴 수 있어 반복 간격과 전체 마이그레이션 완료 일정을 상당히 길어지게 합니다.
  • 파일 첨부 파일: 가져오기 크기를 줄이고 처리 속도를 높이기 위해 매우 크거나 중요하지 않은 첨부 파일(예: 공개 소프트웨어 다운로드 패키지, 비디오 또는 오래된 미디어 자산)을 제외할 수 있는지 고려합니다.

인프라 고려 사항#

가져오기를 실행하는 환경은 성능에 크게 영향을 미칠 수 있습니다:

  • 테스트 환경: 항상 먼저 개발 또는 스테이징 환경에서 마이그레이션을 실행하세요. 대부분의 마이그레이션은 프로덕션 가져오기가 성공하기 전에 여러 번의 반복이 필요합니다.
  • 운영 체제: 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.EnableSignUpWithEmailEmailSettings.EnableSignInWithEmail: 모두 true로 설정해야 합니다
  • FileSettings.MaxFileSize: Slack 내보내기의 가장 큰 파일보다 높게 설정합니다.
  • ElasticsearchSettings.EnableIndexing, ElasticsearchSettings > EnableSearchingElasticsearchSettings.EnableAutocomplete: 성능 문제를 방지하기 위해 가져오기 중에 모두 false로 설정해야 합니다. 가져오기 후 Elasticsearch를 활성화하기 전에 인덱스를 비우고 재인덱싱할 수 있습니다.

2. Slack 데이터 내보내기#

Slack은 제품에서 데이터를 내보내는 두 가지 방법을 제공합니다.

  1. 공개 채널 내보내기 - 공개 채널 메시지 및 파일 링크만 포함합니다. 모든 Slack 플랜에서 사용 가능합니다. Slack > Admin > Workspace settings > Security > Import & export data > Export에서 생성합니다.
  2. 모든 채널 및 대화 내보내기 - 공개 채널, 비공개 채널, DM 및 그룹 메시지를 포함한 모든 메시지를 포함합니다. Business+(워크스페이스 기본 소유자의 애플리케이션 승인 필요) 및 Enterprise Grid 플랜에서 사용 가능합니다.

다음 내용이 포함된 zip 파일을 받게 됩니다:

  • 채널 (channels.json)
  • 사용자 (users.json)
  • 다이렉트 메시지 (dms.json) (모든 채널 내보내기)
  • 비공개 채널 (groups.json) (모든 채널 내보내기)
  • 그룹 다이렉트 메시지 (mpims.json) (모든 채널 내보내기)
  • 앱 활동 로그 (integration_logs.json)
  • 모든 공개 채널의 게시물이 포함된 폴더
  • 모든 비공개 채널의 게시물이 포함된 폴더 (모든 채널 내보내기)
Note
    • zip 파일 내용에 대한 추가 세부 정보는 Slack 도움말 문서를 참조하세요.
    • 독점 SaaS 서비스인 Slack은 내보내기 형식을 빠르게 변경할 수 있으며 사전 통지 없이 변경할 수 있습니다.
    • Slack Free 플랜의 워크스페이스는 최근 90일간의 파일 링크만 내보낼 수 있습니다.
Important

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이 됩니다).

Note

팀은 가져오기 전에 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 내보내기 파일을 파싱할 때 프로세스는 4단계를 거칩니다. 각 단계에서 로그 출력을 모니터링하여 진행 상황을 추적할 수 있습니다. 이러한 단계를 이해하면 파싱 단계에 얼마나 시간이 걸릴지 예상하는 데 도움이 됩니다.

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 사용자는 Slack의 이메일 주소로 Mattermost의 Password Reset 화면을 사용하여 Mattermost 계정에 대한 새 비밀번호를 설정함으로써 새 Mattermost 계정을 활성화합니다. 사용자 인증을 LDAP 또는 SAML로 마이그레이션하는 방법 지침을 참조하세요.

* 시스템 관리자가 수행하는 가져오기의 경우: 사용자는 즉시 Password Reset 기능을 사용할 수 있습니다(이메일 확인 불필요). * 비관리자가 수행하는 가져오기의 경우: 사용자는 먼저 이메일 주소를 확인한 다음 Password Reset 기능을 사용해야 합니다.

* 로그인하면 Mattermost 사용자는 Slack에서 가져온 공개 채널의 이전 Slack 메시지에 액세스할 수 있습니다.

FAQ#

Slack Enterprise Grid에 대한 추가 고려 사항은 무엇입니까?#

Slack Enterprise Grid는 단일 관리 플레인 아래에 여러 워크스페이스를 결합하며, 관련 내보내기는 그 복잡성을 반영합니다. Enterprise Grid 내보내기는 모든 워크스페이스와 공유 채널을 포함하는 단일 아카이브입니다.

Mattermost는 팀 간 공유 채널을 지원하지 않으므로 Slack 공유 채널은 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 팀에 매핑#

  1. Slack에서 전체 Enterprise Grid 내보내기를 다운로드합니다.
  2. 각 공유 채널이 Mattermost에서 어디에 속하는지 결정하려면 각 공유 채널의 첫 번째 게시물에서 team 속성을 찾습니다. 이 team 값은 채널을 Slack의 원본 워크스페이스에 다시 매핑합니다. 각 공유 채널은 가져온 후 Mattermost에서 이 위치에 있게 됩니다.
  3. {
      "client_msg_id": "",
      "type": "",
      "text": "",
      "user": "U1",
      "ts": "1695219722.430309",
      "blocks": [  ],
      "team": "team1",
      "user_team": "team1",
      "source_team": "team1",
      "user_profile": { }
    },
  4. Slack 팀 ID를 위에서 찾은 각 team 속성에 매핑하는 teams.json 파일을 만듭니다. 예를 들어:
  5. {
        "T0001" : "team1",
        "T0002" : "team2"
    }
  6. 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의 스레딩 방식 차이로 인해 일부 스레딩 관계가 항상 보존되지 않을 수 있습니다.
  • 캔버스: 캔버스는 Mattermost에서 지원되지 않으며 마이그레이션되지 않습니다.
  • 사용자 존재 및 프로필: 사용자 상태(온라인/자리비움), 프로필 사진 및 사용자 지정 프로필 필드는 이전되지 않습니다. 사용자는 Mattermost에서 프로필을 업데이트해야 합니다.
  • 비활성화된 사용자의 채널 멤버십: 비활성화되거나 삭제된 Slack 사용자는 Mattermost로 마이그레이션되지 않습니다.
이러한 제한으로 인해 특히 워크플로우와 통합의 경우 가져오기 후 일부 수동 재구성이 필요합니다. Slack 마이그레이션에 대한 Mattermost 전문가의 지원을 받을 수 있습니다.

Slack에서 마이그레이션

원문 보기
요약

Mattermost는 Slack에서 신뢰할 수 있는 마이그레이션 경로를 제공하여, 조직의 협업 기록을 안전하고 자체 호스팅된 Mattermost 환경으로 가져올 수 있도록 합니다. 이 프로세스에는 일반적으로 환경 준비, Slack에서 데이터 내보내기, 해당 데이터를 호환 가능한 형식으로 변환, Mattermost로 가져오기 등이 포함됩니다.

개요#

Mattermost는 Slack에서 신뢰할 수 있는 마이그레이션 경로를 제공하여, 조직의 협업 기록을 안전하고 자체 호스팅된 Mattermost 환경으로 가져올 수 있도록 합니다. 마이그레이션 프로세스는 사용자, 채널 및 메시지 기록, 다이렉트 메시지, 스레드를 포함한 전체 워크스페이스를 지원하므로 팀이 중요한 컨텍스트를 잃지 않고 계속 작업할 수 있습니다.

이 프로세스에는 일반적으로 환경 준비, Slack에서 데이터 내보내기, 해당 데이터를 호환 가능한 형식으로 변환, Mattermost로 가져오기 등이 포함됩니다. Slack에서의 마이그레이션은 여러 단계를 거치는 복잡한 프로세스로, 특히 대규모 조직이나 여러 Slack 워크스페이스를 가진 조직의 경우 더욱 복잡할 수 있습니다.

또한 Slack의 데이터 제어 정책이나 내보내기 기능은 언제든지 변경될 수 있으며, Slack에 저장된 데이터를 내보내는 데 비용을 청구할 수도 있다는 점을 고려하세요. Slack Enterprise에서 고객 IP 내보내기 협상 지원은 Mattermost 전문가에게 문의하여 요청할 수 있습니다.

  1. 준비:
    • 주요 범위 파악 질문에 답변합니다.
    • 환경 및 내보내기 세부 정보를 수집합니다.
    • Mattermost 서버 용량과 구성을 검증합니다.
    • 가져오기 전에 Mattermost 환경을 백업합니다.
  2. Slack 데이터 내보내기:
    • Slack에서 내보내기를 생성합니다.
  3. Mattermost를 위한 내보내기 변환:
    • mmetl check slack을 사용하여 Slack 내보내기를 검증합니다.
    • mmetl 도구를 사용하여 Slack 내보내기를 파싱하고 변환합니다.
  4. Mattermost로 가져오기:
    • mmctl을 사용하여 변환된 아카이브를 업로드하고 처리합니다.
  5. 검증 및 테스트:
    • 채널 및 사용자 데이터가 올바르게 가져와졌는지 확인합니다.
    • 데이터베이스 쿼리를 실행하여 읽지 않은 상태를 수정합니다.
  6. 가동 시작:
    • 사용자에게 전환 계획을 전달합니다.

마이그레이션 일정#

이 지침은 메시지, 파일 및 워크스페이스 구조의 대부분을 보존하도록 설계된 최선의 노력 마이그레이션 경로를 개략적으로 설명합니다. Mattermost는 프로세스를 간소화하는 데 도움이 되는 도구와 지침을 제공하지만, 데이터 변환 및 가져오기 단계에서 수동 조정이 필요한 경우가 많습니다. 성공적인 마이그레이션은 신중한 계획과 충분한 시간, 기술 리소스 및 기술 역량을 노력에 투입하는 것에 달려 있습니다.

Slack 환경의 규모와 복잡성에 따라 전체 마이그레이션은 며칠에서 여러 주의 전담 노력이 필요할 수 있습니다. 여러 워크스페이스, 방대한 메시지 기록 및 많은 파일을 가진 대규모 조직은 완료 전에 상당한 반복 작업과 테스트가 필요할 것으로 예상해야 합니다. 필요한 리소스를 할당하고, 개발 환경에서 시범 가져오기 시간을 계획하며, 팀 간에 조율하여 이 일정을 미리 계획하는 것이 중요합니다. 변환 및 가져오기 단계에서 조정을 위한 여분의 시간을 확보하면 보다 원활한 전환을 보장하고 사용자 혼란을 줄이는 데 도움이 됩니다.

준비 단계에서 적절한 마이그레이션 범위를 설정하면 처리 시간을 크게 줄이고 더 빠른 반복을 가능하게 합니다. 시작하기 전에, Mattermost로 가져올 데이터가 무엇인지 신중하게 고려하세요. 많은 조직에서 모든 채널이나 파일을 마이그레이션할 필요가 없다는 것을 발견하며, 진정으로 필요한 것에만 집중하면 상당한 처리 시간과 수동 노력을 절약할 수 있습니다. 초기에 명확한 경계를 설정하면 수동 개입과 테스트가 필요한 데이터의 양을 최소화하여 마이그레이션 일정을 단축하고 불필요한 복잡성을 방지하는 데 도움이 됩니다.

Note

조직에서 Slack에서 Mattermost로의 마이그레이션에 대한 지원이 필요한 경우 Mattermost 전문가와 상담하는 것을 고려하세요.

마이그레이션 단계#

1. 준비#

마이그레이션을 시작하기 전에 환경을 적절히 준비하는 것이 중요합니다. 철저한 준비는 처리 시간을 줄이고, 더 빠른 반복을 가능하게 하며, 가져오기 중 피할 수 있는 문제가 발생할 가능성을 최소화합니다.

이 문서는 Slack 데이터를 받을 준비가 된 Mattermost Server가 이미 배포되어 있다고 가정합니다. 그렇지 않은 경우, 지원하는 데이터베이스 및 파일 스토리지 인프라에 대한 정보에 입각한 결정을 내리기 위해 이 섹션의 권장 사항을 적절한 배포 문서와 함께 고려하세요.

범위 정의#

마이그레이션 범위를 정의하는 것으로 시작합니다:

  • Slack 에디션: Slack Enterprise Grid에서의 마이그레이션에는 추가 단계 및 계획이 필요합니다.
  • 데이터 기록: 가져올 기록의 양을 결정합니다. 더 짧은 기간(예: 최근 6개월)만 가져오면 복잡성과 처리 시간을 크게 줄일 수 있습니다.
  • 내보내기 크기: 이 가이드를 진행하면서 Slack 내보내기 파일의 크기를 고려하세요. 파일 크기는 가져오기 소요 시간에 직접적인 영향을 미칩니다 - 예를 들어 ~25 GB 미만의 파일은 하루 내에 완료되는 경우가 많지만, 100 GB 이상의 내보내기는 여러 날이 걸릴 수 있어 반복 간격과 전체 마이그레이션 완료 일정을 상당히 길어지게 합니다.
  • 파일 첨부 파일: 가져오기 크기를 줄이고 처리 속도를 높이기 위해 매우 크거나 중요하지 않은 첨부 파일(예: 공개 소프트웨어 다운로드 패키지, 비디오 또는 오래된 미디어 자산)을 제외할 수 있는지 고려합니다.

인프라 고려 사항#

가져오기를 실행하는 환경은 성능에 크게 영향을 미칠 수 있습니다:

  • 테스트 환경: 항상 먼저 개발 또는 스테이징 환경에서 마이그레이션을 실행하세요. 대부분의 마이그레이션은 프로덕션 가져오기가 성공하기 전에 여러 번의 반복이 필요합니다.
  • 운영 체제: 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.EnableSignUpWithEmailEmailSettings.EnableSignInWithEmail: 모두 true로 설정해야 합니다
  • FileSettings.MaxFileSize: Slack 내보내기의 가장 큰 파일보다 높게 설정합니다.
  • ElasticsearchSettings.EnableIndexing, ElasticsearchSettings > EnableSearchingElasticsearchSettings.EnableAutocomplete: 성능 문제를 방지하기 위해 가져오기 중에 모두 false로 설정해야 합니다. 가져오기 후 Elasticsearch를 활성화하기 전에 인덱스를 비우고 재인덱싱할 수 있습니다.

2. Slack 데이터 내보내기#

Slack은 제품에서 데이터를 내보내는 두 가지 방법을 제공합니다.

  1. 공개 채널 내보내기 - 공개 채널 메시지 및 파일 링크만 포함합니다. 모든 Slack 플랜에서 사용 가능합니다. Slack > Admin > Workspace settings > Security > Import & export data > Export에서 생성합니다.
  2. 모든 채널 및 대화 내보내기 - 공개 채널, 비공개 채널, DM 및 그룹 메시지를 포함한 모든 메시지를 포함합니다. Business+(워크스페이스 기본 소유자의 애플리케이션 승인 필요) 및 Enterprise Grid 플랜에서 사용 가능합니다.

다음 내용이 포함된 zip 파일을 받게 됩니다:

  • 채널 (channels.json)
  • 사용자 (users.json)
  • 다이렉트 메시지 (dms.json) (모든 채널 내보내기)
  • 비공개 채널 (groups.json) (모든 채널 내보내기)
  • 그룹 다이렉트 메시지 (mpims.json) (모든 채널 내보내기)
  • 앱 활동 로그 (integration_logs.json)
  • 모든 공개 채널의 게시물이 포함된 폴더
  • 모든 비공개 채널의 게시물이 포함된 폴더 (모든 채널 내보내기)
Note
    • zip 파일 내용에 대한 추가 세부 정보는 Slack 도움말 문서를 참조하세요.
    • 독점 SaaS 서비스인 Slack은 내보내기 형식을 빠르게 변경할 수 있으며 사전 통지 없이 변경할 수 있습니다.
    • Slack Free 플랜의 워크스페이스는 최근 90일간의 파일 링크만 내보낼 수 있습니다.
Important

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이 됩니다).

Note

팀은 가져오기 전에 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 내보내기 파일을 파싱할 때 프로세스는 4단계를 거칩니다. 각 단계에서 로그 출력을 모니터링하여 진행 상황을 추적할 수 있습니다. 이러한 단계를 이해하면 파싱 단계에 얼마나 시간이 걸릴지 예상하는 데 도움이 됩니다.

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 사용자는 Slack의 이메일 주소로 Mattermost의 Password Reset 화면을 사용하여 Mattermost 계정에 대한 새 비밀번호를 설정함으로써 새 Mattermost 계정을 활성화합니다. 사용자 인증을 LDAP 또는 SAML로 마이그레이션하는 방법 지침을 참조하세요.

* 시스템 관리자가 수행하는 가져오기의 경우: 사용자는 즉시 Password Reset 기능을 사용할 수 있습니다(이메일 확인 불필요). * 비관리자가 수행하는 가져오기의 경우: 사용자는 먼저 이메일 주소를 확인한 다음 Password Reset 기능을 사용해야 합니다.

* 로그인하면 Mattermost 사용자는 Slack에서 가져온 공개 채널의 이전 Slack 메시지에 액세스할 수 있습니다.

FAQ#

Slack Enterprise Grid에 대한 추가 고려 사항은 무엇입니까?#

Slack Enterprise Grid는 단일 관리 플레인 아래에 여러 워크스페이스를 결합하며, 관련 내보내기는 그 복잡성을 반영합니다. Enterprise Grid 내보내기는 모든 워크스페이스와 공유 채널을 포함하는 단일 아카이브입니다.

Mattermost는 팀 간 공유 채널을 지원하지 않으므로 Slack 공유 채널은 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 팀에 매핑#

  1. Slack에서 전체 Enterprise Grid 내보내기를 다운로드합니다.
  2. 각 공유 채널이 Mattermost에서 어디에 속하는지 결정하려면 각 공유 채널의 첫 번째 게시물에서 team 속성을 찾습니다. 이 team 값은 채널을 Slack의 원본 워크스페이스에 다시 매핑합니다. 각 공유 채널은 가져온 후 Mattermost에서 이 위치에 있게 됩니다.
  3. {
      "client_msg_id": "",
      "type": "",
      "text": "",
      "user": "U1",
      "ts": "1695219722.430309",
      "blocks": [  ],
      "team": "team1",
      "user_team": "team1",
      "source_team": "team1",
      "user_profile": { }
    },
  4. Slack 팀 ID를 위에서 찾은 각 team 속성에 매핑하는 teams.json 파일을 만듭니다. 예를 들어:
  5. {
        "T0001" : "team1",
        "T0002" : "team2"
    }
  6. 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의 스레딩 방식 차이로 인해 일부 스레딩 관계가 항상 보존되지 않을 수 있습니다.
  • 캔버스: 캔버스는 Mattermost에서 지원되지 않으며 마이그레이션되지 않습니다.
  • 사용자 존재 및 프로필: 사용자 상태(온라인/자리비움), 프로필 사진 및 사용자 지정 프로필 필드는 이전되지 않습니다. 사용자는 Mattermost에서 프로필을 업데이트해야 합니다.
  • 비활성화된 사용자의 채널 멤버십: 비활성화되거나 삭제된 Slack 사용자는 Mattermost로 마이그레이션되지 않습니다.
이러한 제한으로 인해 특히 워크플로우와 통합의 경우 가져오기 후 일부 수동 재구성이 필요합니다. Slack 마이그레이션에 대한 Mattermost 전문가의 지원을 받을 수 있습니다.