개발&Development/태터툴즈

태터툴스 0.96x to 1.02 마이그레이션기

겐도 2006. 3. 18. 18:35

이전부터 1.01 테스트 사이트를 통해 스킨 등의 기본 준비를 하고 있었고 1.02의 알파/베타 테스트 데이터로 엄청 사용되었기 때문에 별 무리없이 이전에 성공하였습니다. RSS로 구독하시던 분들은 갑자기 글이 중복되어 등록된 것을 보실 수 있을 것입니다. 0.96x와 1.02의 RSS 출력 차이에 의한 것이죠. 반대로 기존의 링크 주소나 RSS 주소는 동일하기 때문에 구독설정을 수정할 필요는 없습니다. (거의 1.02 출시 마지막에 추가된 기능이라죠? ^^)

준비단계
0.96x와 1.02 사이에는 많은 변화가 있어서 일부 글들은 수습불가 상태로 글이 깨져 버리기도 합니다. 현재의 1.02 에디터는 이 상황을 해결 할 수 없습니다. DB를 직접 수정하거나 거의 새로 작성해 줘야 합니다. 더불어 데이터 백업 등의 이유로 인하여 가능하다면 기존의 블로그를 유지하는 것이 좋습니다. 0.96x의 경우 경로만 변경해 주면 정상적으로 동작하기 때문에 이 작업이 쉽습니다. 적당한 백업 경로를 만들고 모두 이동시킵니다.
물론 이 전에 폴더의 파일을 압축하고 DB의 내용도 별도로 덤프를 시켜 두는 것도 좋습니다.
그리고 이전에 설치되었던 경로와 동일하게 1.02를 받아서 설치합니다. DB의 prefix를 다르게 하면 동시에 0.96x와 1.02를 유지할 수 있습니다.

migrator 준비하기
제가 사용하는 환경에서 조차 업로드 제한이 2M라서 블로그 전체를 백업받아 1.02의 Import에 넣을 수 없는 상황입니다. 따라서 URL 지정 방식을 사용해야 했습니다. 기왕 이럴꺼 약간의 트릭을 사용했습니다. 태터 공식 홈에서 제공되는 migrator.php를 수정을 합니다. 사용자 인증을 없애고 바로 xml로 백업을 수행하도록 하는 것입니다. 여기서 주의점은 블로그 내의 모든 데이터를 볼 수 있기 때문에 migrator.php 이름을 변경하고 모든 작업이 끝난 후엔 chmod 600 정도로 다른 사람이 접근하지 못하게 하는 것이 좋습니다. 자 그럼 소스를 수정해 봅시다.

중간에

....
</html>
<?
       exit;
}
check_authority();

if (!isset($_GET['migrate'])) {
       header('Content-Type: text/html; charset=utf-8');
?>
...
라는 부분이 보입니다. 이 부분을 다음과 같이 수정합니다.

....
</html>
<?
       exit;
}
//check_authority();

if (!isset($_GET['migrate'])) {
       header('Content-Type: text/html; charset=utf-8');
?>
...
사용자 인증 부분을 comment out 하는 것입니다. 이런식으로 한 후 위 파일의 URL 다음에 "?migrate"를 붙여주면 바로 데이터를 콸콸콸 쏟아 낼것입니다.

임포트~~
이제 새로 설치된 1.02로 가서 데이터 불러오는 작업을 시작합니다. 데이터의 URL은 직전에 설명한 방식을 사용합니다. 부디 성공하길 기원합니다. 0.96x의 경우 euc-kr이기 때문에 utf-8의 1.02로 변환되면서 많은 위험성이 존재하였습니다. 1.02 개발 초기 단계에서는 실제로 잘 안되었다는 군요. 하지만 열혈 테스터인 겐도군의 블로그가 0.96x여서 오히려 클래식 보다 더 잘된다는 소문이...
에러가 나는 경우 현재 설치한 1.02를 다른 폴더로 옮기고 0.96을 원래 위치로 이동시키고는 PAPACHA씨를 괴롭히면 되겠습니다. 잘되면 이제 그냥 쓰는 겁니다.
이 상황에서 있지 말아야 할 것은.. 위에서 사용했던 migrator 파일의 퍼미션을 확인하세요. 블로그를 통째로 펌질 당하고 싶지 않다면요.

정리작업
처음에도 언급하였습니다만 0.96에서 잘 보이던 글이 1.02에선 와장창 깨지는 경우가 종종 있습니다. 저도 CODE가 제대로 처리되지 않아 수정하였습니다.(위에 CODE 버튼은 있으면서도 지원이 아직 안된다죠;;) 중간의 Openyourbook 관련 스크립트도 당했구요. (태터 플러그인 게시판에 Pure라는 놈을 만든 이유..) 특히 스크립트의 경우 1.02 에디터에서는 수정할 수 없기 때문에 0.96을 옆에 뛰우고 그 데이터를 이용해서 새로 작성하는 것을 권장합니다.
또하나. 일부 정상적이지 못한 문자들이 기존에 입력되어 있는 경우 1.02로 넘어 올때 '?'로 변신시켜 준다고 합니다. 남의 글을 퍼다가, 혹은 편집 실수로 잘못된 표현된 문자가 ?로 나오니 이런 것도 한번씩 점검 하시기 바랍니다.