ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 부스트캠프 Slack 백업받기
    부스트캠프 AI Tech 4기/꿀팁 2023. 2. 9. 17:12

     

    오프라인에서 잠시 가졌었던  <운영진과의 대화> 시간에서 어떤 캠퍼분이 Slack 대화 내용을 캠퍼들이 각자 백업해야 되는지 질문한 적이 있다. 운영진에서 Slack 대화내용을 백업받아 제공하지는 않으니, 필요하다면 캠퍼분이 직접 하셔야 된다고 답변해주셨다.

     

    그리고 Level 3 타운홀미팅에서도 Slack은 포스트 세션 기간까지 이용 가능하고 그 이후로는 사용이 불가능하니, 필요하신 분은 미리미리 중간중간 아카이빙 하라고 안내를 해주셨다.


    자, 그럼 이제 Slack을 아카이빙해보자!

     

    어떻게 하면 되지?


    구글링을 조금 하면

    역시!!

    Slack에서 공식적으로 제공해주는 기능이 있다!

    워크스페이스 데이터 내보내기 | Slack

    앗, 그런데 제일 위에 뭔가 적혀있다?

    음... 그러니까 우리는 권한이 없어서 할 수 없다...


    어쩔 수 없이 다른 방법을 찾아보자...

     

    미리 찾아본 입장에서 답을 알려주자면, 우리들의 놀이터인 GitHub에 답이 있다.


    GitHub에서 slack archiveexport, backup, dump 등의 키워드로 검색해보고,

    부스트캠프 AI Tech 과정에서 Python을 배웠으니 (Python 공부도 할 겸) Python으로된 프로젝트들을 찾아보자.

     

    여러가지 중에서 sebseager/slack-exporter를 선택하였다.

     

    GitHub - sebseager/slack-exporter: A Slack bot for exporting content from public and private channels.

    A Slack bot for exporting content from public and private channels. - GitHub - sebseager/slack-exporter: A Slack bot for exporting content from public and private channels.

    github.com


     

    1. Slack App 만들기

    slack-exporter의 README를 살펴보면, Slack에 인증하기 위해 앱을 만들라고 한다.

    https://api.slack.com/apps/에 들어가서 Slack App을 만들자.

     

     

    Slack API: Applications | Slack

    Your Apps Don't see an app you're looking for? Sign in to another workspace.

    api.slack.com

     





    아래 화면으로 넘어가면 Slack App 생성 완료!

     

     

    2. Slack App 셋팅하기

    이제 앱에 권한을 주고 설치하자. 


    Permissions에 들어왔으면

    스크롤을 쭉 내려서 Scopes를 찾고,

    Add an OAuth Scope 버튼을 누르고 몇가지를 추가한다.

    이런식으로 Scope를 하나씩 찾아서 선택하면 된다.

     

    그런데 어떤 Scope들을 넣어야 하지?

     

    어떤 Scope를 넣어야 하는지 README에서는 별도로 언급이 없는데, 보통 설정 파일에 담겨있다.

    slack.yaml 파일을 보면, 아래와 같이 어떤 scope들이 필요한지 적혀있다.

    oauth_config:
      scopes:
        user:
          - channels:read
          - channels:history
          - groups:read
          - groups:history
          - mpim:read
          - mpim:history
          - im:read
          - im:history
          - users:read
          - files:read
        bot:
          - commands
          - chat:write
          - chat:write.public

    여기서 bot에 있는 것들은 /remind나 /anonymous할 때와 같이 slash 명령어로 내보내고 싶을 때 필요한 권한이니 스킵하고, user에 있는 10가지 scope들을 추가해주자.

     


    이렇게 Scope들을 모두 추가했다면,

    맨 위로 스크롤을 쭉 올려서 Install to Workspace를 클릭하자.



    설치하고 나면 이렇게 xoxp로 시작하는 OAuth Token이 생긴다!

     

    참고로, Token은 당연히 공개하면 안됩니다!  저는 포스팅하고 앱을 삭제할 겁니다.

    항상 보안에 신경써주세요.

     

     

    3. 스크립트 실행하기

    slack-exporter-master.zip을 다운 받아서 압축을 풀자.

    (git clone https://github.com/sebseager/slack-exporter.git 으로 받아도 된다)

     

    .env 파일을 열어서 위에서 확인한 OAuth Token을 넣어주고 저장하자.

     

    자, 드디어 이제 실행하기만 하면 끝!!!

     

    끝이긴 하지만, 실행하기 전에 어떤 옵션이 있는지 살펴보자.

    $ python exporter.py --help
    usage: exporter.py [-h] [-o O] [--lc] [--lu] [--json] [-c] [--ch CH] [--fr FR] [--to TO] [-r] [--files]
    options:
      -h, --help  show this help message and exit
      -o O        Directory in which to save output files (if left blank, prints to stdout)
      --lc        List all conversations in your workspace
      --lu        List all users in your workspace
      --json      Give the requested output in raw JSON format (no parsing)
      -c          Get history for all accessible conversations
      --ch CH     With -c, restrict export to given channel ID
      --fr FR     With -c, Unix timestamp (seconds since Jan. 1, 1970) for earliest message
      --to TO     With -c, Unix timestamp (seconds since Jan. 1, 1970) for latest message
      -r          Get reply threads for all accessible conversations
      --files     Download all files

     

    -c 과 -r은 기본적으로 넣으면 될 것 같고,

    파일을 받고 싶으면 --files 옵션 넣고,

     

    원하는 기간의 데이터만 받고 싶을 때에는 (잘 받아지는지 빠르게 테스트해보고 싶거나) --fr FR --to TO 를 이용하면 된다.

    여기서 FR, TO에 들어가는 Unix Timestamp 값은 https://www.unixtimestamp.com/ 에서 확인할 수 있다.

    • 1661958000 : 2022년 9월 1일 목요일 오전 12:00:00 GMT+09:00
    • 1664550000 : 2022년 10월 1일 토요일 오전 12:00:00 GMT+09:00
    • ...
    • 1675177200 : 2023년 2월 1일 수요일 오전 12:00:00 GMT+09:00

     

    채널 ID 찾기

    특정 채널만 백업하고 싶을 때에는 채널 ID를 알아야 한다.

     

    Slack에서 채널 세부정보를 보면,

     

    채널 세부정보 맨 아래에 채널ID가 있다.

     

     

    명령어 예시

    # 접근 가능한 모든 대화와 스레드 댓글과 모든 파일을 backup 폴더에 다운로드하기
    python exporter.py -o ./backup -c -r --files
    
    # 위와 똑같은데, json 형식   (차이점은 본문 아래에)
    python exporter.py -o ./backup -c -r --files --json
    
    # <함께자라기> 채널을 받고 싶다면?
    python exporter.py -o "./함께자라기" -c -r --files --ch C0442F7V1N0
    
    # <함께자라기> 채널 중에서 2022년 9월만 받고 싶다면?
    python exporter.py -o "./2209함께자라기" -c -r --files --ch C0442F7V1N0 --fr 1661958000 --to 1664550000

     

    --json 옵션에 따른 결과

    --json 옵션 없이&nbsp; &nbsp;vs&nbsp; &nbsp;--json 옵션 넣고

     

     

    백업되는 채널

    • 공개된 채널 (참여 여부 상관없이)
    • 비공개된 채널 중 내가 참여한 채널
    • 내가 참여한 DM

     

    DM도 백업되니, 만약 백업본을 공유한다면 조심하자!

     

     

    부스트캠프 AI Tech 4기 Slack random 채널에 공유!

     

     
     

    댓글

Designed by Tistory.