CMS Migration

지각생 연습장

목차

CMS Migration

CMS 간의 데이터 변환은 꾸준히 있는 작업이다. 지금까지는 제로보드와 꼼뮨(진보넷 CMS), 그것들 간 혹은 그것들로(부터)의 변환이 많았다. 지금 파고 들고 있는 Drupal CMS로의 변환 작업 꺼리가 생겼다. 그냥 직접 DB를 건드리기 보다는, 사람들이 쉽게 활용할 수 있도록 Drupal API 를 활용한 "모듈"로 제작하는게 바람직할 것이다.

변환 대상

보통은,

  • 사용자(회원,Users) 정보
  • 글(Article, Post)
  • 덧글(Comment)
  • 구조(Structure, Category) : 상응하는 게시판, taxonomy 설정등
  • 첨부파일(Attach)

이 다섯 가지를 처리하는게 핵심이다.

순서

  1. 기본 정보를 수집 : 옮겨올(갈) DB 접속정보, 이름 등, 테이블 식별자등.
  2. 구조(게시판) 정보를 읽어오고 이동 방법등을 결정
  3. 백업
  4. 구조 생성 : 옮겨갈 곳에
  5. 카테고리 생성
  6. 데이터 이동 : 글, 덧글, 첨부파일
  7. 마무리 작업 : 글 수 등 통계 자료, 메타 정보등 생성

이런 순서로 대강 작업이 되겠다.

작업 사례: 미문동

미문동. 꼼뮨 -> drupal. 2007/3/25. 이런 피곤한 과정의 앞부분을 자꾸 반복하는게 싫어 여기에 적어놓음.

개요

  • 방식 : 글, 덧글 이런걸 일괄적으로 하지 않고, 글 하나 옮기며, 그와 관련된 덧글, 파일 처리, 카테고리 지정을 하나씩 하며 나감. 이게 간명하고, 중간에 에러가 나도 그 부분까지는 안전하다.
  • 작업 순서 : 옮겨갈 곳을 먼저 살피고, 기존 게시판으로 눈을 돌린다
    1. 드루팔 구조를 분석
    2. 어떤 데이터(필드) 가져올지 결정
    3. 어떤 방법으로 넣을지 결정(API)
    4. 기존 게시판에서 옮겨올 것들 목록(게시판, 글, 선택해서)
    5. 기존 게시판과 새 CMS의 테이블, 필드 매칭.
    6. 테스트 CMS 설치
    7. 테스트 데이터 부분 이전
    8. 디버그
    9. 전체 데이터 이전(테스트)
    10. 전체 데이터 이전(원래 목표 CMS)
  • 게시판은 상응하는 forum을 만든다.
  • 나중에 5.x로 업그레이드할 수 있다면, NodeType 모듈로 알맞게 데이터 형식을 변경할 수 있을 것.

관련된 테이블 : 드루팔

  • 드루팔 기본 노드 : node, node_access, node_revisions, node_counter
  • 게시판(포럼) : forum
  • 덧글 : comments
  • 첨부파일 : files, file_revisions
  • 카테고리 : vocabulary, vocabulary_node_type, term_data, term_hierarchy
    • 옮길때, 카테고리를 먼저 추가한 후, 그 array를 유지하고 있어야 겠다. (어떤 term의 번호는 무엇인가 함수를 만들어놓던가)

관련된 테이블 : 꼼뮨

  • 게시판 데이터 : 종류에 따라, maybbs_*_board, news_*_board, photo_*_board
  • 게시판 정보 : maybbs_config_info, news_ ...
  • 카테고리 : 종류에 따라, maybbs_*_category1(~3), news_ ...
  • 덧글 : maybbs_*_comment_memo ...

API

아래의 것들이 필요하다.

미문동 데이터 옮기기

구 게시판 목록

  • 비디오 : gomediaction-7
  • 라디오 : gomediaction-16
  • 이미지 : -5
  • 모바일 : -6
  • 기획영상 : -13
  • 방송국 : -4 (영상: category1=1, 라디오: category1=3)
  • 인터넷방송 : _broadcasting
    • 방송참여 : category1=1
    • 기획안 : 3
    • 소스공유 : 4
    • 제작과정 : 5
    • 방송봤는데 : 9
    • 자유롭게 : 10
    • 황새울방송-들소리 : 11
  • 참여게시판 : -8
  • 자료 : -9
  • NEWS : -11
  • english : -en
  • 온라인행동 : _onlineAction
  • 상영배급 : _screening
  • 번역 : translation

과정

  • DB 접속 정보 설정/불러옴
  • DB 확인 (새 드루팔) :
  • 드루팔 포럼 컨테이너 생성 : comm2drupal_new_forum_container()
  • 각 게시판의,
    1. 이름을 알아냄 : _get_comm_bbs_name()
    2. 새 드루팔 포럼 생성 : _new_forum()
    3. 카테고리 정보 불러옴 : _get_comm_category()
    4. 새 드루팔 term 생성  : _new_term()
    5. 각 게시판글의,
      1. 제목, 글 등 정보를 불러옴 : _get_comm_content()
      2. 드루팔 포럼 주제 생성 : _new_forum_topic()
      3. 덧글 불러오기 -> 드루팔 덧글 생성 : _get_comm_comments() => _new_forum_topic_comments()
      4. 새 드루팔 포럼 주제에 카테고리 지정 : _set_forum_topic_category()

드루팔 모듈

  • 4.7 용 (지금 미문동 사용중)
  • 이름 : comm2drupal.module
  • wp2drupal.module 참고.
  • 테스트 : http://h2dj2.key.or.kr/d4
  • DB 설정 페이지 추가
  • 추가 발견(wp2drupal 보다가) : trackback, DB cleanup, encoding 등 => 나중 버전에.
  • 2007/3/27, 01:41. 모듈 외관 완성. 데이터 이전부분 코드만 완성하면 됨.
개인 도구