티스토리 to 워드프레스 (3), 글 이전하기(HTML Import 2)

HTML Import 2 플러그인을 이용하여 티스토리의 백업을 워드프레스로 가져오기 위하여 이 플러그인을 설치, 설정하고, 실행하여 글을 실제로 옮긴 과정과 그 후에 했던 일을 기록한다. 이 플러그인의 내려받기 링크를 제공한다.

티스토리 백업하기

티스토리 관리자 -> 관리 -> 블로그:
블로그 백업

작성된 글, 첨부 이미지/파일/동영상을 백업 지원합니다.
백업 요청 시점을 기준으로 저장된 데이터를 백업 지원합니다.
댓글/방명록, 통계, 스킨, 링크 등은 백업되지 않습니다.
용량에 따라 다소 시간이 소요될 수 있습니다.
데이터 백업 후 30일간 다운로드 가능하며, 해당 기간 동안은 새로운 데이터 백업이 불가능합니다.
동영상은 백업 파일 안에 포함되지 않으니 ‘동영상 다운로드’ 버튼을 눌러 별도 다운로드해주세요. 탈퇴 후 다운로드는 불가능합니다.

그렇다. 한 번 백업하면 다음 백업은 30일 후에나 가능하다. 나는 처음에 그 의미를 다음과 같이 이해했다:

‘한 번 백업했으면 더 이상 티스토리에 글 쓰면 안 되겠네. 글을 써 봐야 사실상 다른 데로 옮기긴 힘드니까.’

이전 후에 추가 이전도 가능

지나고 보니 그건 잘못된 생각이었다. 티스토리 백업을 워드프레스로 옮기고 나서 티스토리에 글을 더 썼어도 다음에 백업해서 추가된 글만 따로 골라내어 워드프레스로 옮길 수 있다(빈 폴더를 만들어서 워드프레스로 옮길 글들의 백업을 그 아래에 복사해 놓고 Html import 를 진행하면 된다). 이미 옮겨놓은 글에 덮어쓰지 않는다. 그래도 안심이 안 되면 워드프레스의 데이터를 백업해 놓은 다음에 진행하면 더욱 안전하다.

HTML Import 2 내려받기, 설치

지금은 워드프레스 관리자의 플러그인 새로 추가 메뉴에서 HTML Import 2 를 검색해 봐도 안 나온다. 구글에서 검색해 봐도 다운로드 링크 찾기가 힘들다. 오랫동안 갱신되지 않아서 그런지 검색에 안 잡힌다. 당황스러운 사람을 위해서 아래에 링크를 걸어둔다:
https://wordpress.org/plugins/import-html-pages/
거기도 안 되면 여기로 가 본다:
https://tobesuccessful.net/html-import-2-plugin-wordpress-download-install.html

압축을 풀면 import-html-pages 라는 디렉토리가 생긴다(디렉토리=폴더). 이걸 wp-content/plugins/ 아래에 옮긴다(FTP 이용).
관리자 페이지 -> 플러그인 -> 설치한 플러그인: HTML Import 2 를 활성화한다.

HTML Import 2 설정

설정 화면으로 들어간다: 설정 -> HTML Import

탭이 6개 나온다. 나는 시행착오를 거치면서 맞는 설정을 하나씩 찾기 시작했다. 그러기 위해서 티스토리 글 중에서 20개를 골라서 따로 한 디텍토리에 모아 놓았다. 이걸 import 하고, 잘 됐나 확인하고, 모든 글 삭제하기를 반복했다. 이렇게 삽질하다 보니 하나씩 옳은 설정이 찾아졌다. 그런데 글 제목과 날짜(일시)가 제대로 안 되었다. 아마 누군가 적당한 설정을 이미 다 찾아놓았겠지? 그래서 검색하여 아래의 Word 님의 글을 찾아서 참고하고, 내가 이미 찾아놓은 설정과 합쳤다.

아래의 내용이 내가 선택하거나 입력한 것이고, 기본 설정을 그대로 유지한 것은 아래에 옮기지 않았다.

탭1 Files

  • Directory to import (자신의 호스팅 서버 상황에 맞게 수정해야 함):
    /host/home/호스팅-아이디/import/내-티스토리-아이디-1-1
    (내가 티스토리 백업 추출한 것을 FTP 클라이언트로 웹호스팅에 올린 경로이다. ftp 클라이언트에서 확인할 수 있다. 필요하면 새로 디렉토리를 만들어도 된다. 나는 html 문서 루트 디렉토리가 아닌 다른 곳에 import 디렉토리를 만들어서 그 아래에 올렸다.)
  • Old site URL:
    https://내-티스토리-아이디.tistory.com
    설명: This will be used only to generate accurate .htaccess redirects. The importer will not search for files here.
    (설명과 같이 이걸 제대로 입력해 놓으면 .htaccess 리디렉션 설정을 자동으로 만들어 준다.(나중에 복사해 붙여 넣어야 함). 하지만 결과적으로 나는 리디렉션 설정도 못 하고 .htaccess 파일도 못 써먹었지만, 이 파일을 보면 어느 글이 어느 글로 import 됐는지 참고는 할 수 있으므로 좋다. 글 번호를 똑같이 맞출 때도 도움이 된다.)
  • Preserve file names
    Use the file’s name as the imported page’s slug -> 선택함.
    => 이렇게 하든지, 안 하든지 결국 슬러그는 깨진다! 그래서 Word 님이 한 것 처럼 티스토리 html 파일의 이름을 숫자로 바꾸었다(import 하기 전에 변경하면 됨. 아래에서 더 자세히 설명함.)

탭2 Content

  • Select content by: HTML tag 선택함:
    Tag: div
    Attribute: class
    Value: contents_style
  • More content options
    Import linked images: 선택함
    Import linked documents: 선택함
  • Allowed file types:
    rtf,doc,docx,xls,xlsx,csv,ppt,pps,pptx,ppsx,pdf,zip,wmv,avi,flv,mov,mpeg,mp3,m4a,wav,txt,ods
    (나는 txt,ods 를 추가하였음. 자기가 티스토리에 첨부한 파일의 확장자를 추가해야 함. 그래야 파일이 제대로 import 됨)

탭3 Title & Metadata

  • Select title by: HTML tag 선택함:
    Tag: h2
    Attribute: class
    = Value: title-article
  • Import files as: ‘글’ 선택함
  • Set status to: private (처음에는 비공개 글로 해 둔다. 나중에 공개로 일괄 변경 가능함)
  • Set timestamps to: custom field (티스토리 글의 일시가 그대로 유지되게 한다는 말)
  • Set author to: 워드프레스에서 사용할 자신의 별명 (사용자 -> 프로필에서 설정하는 것. 나중에 일괄 변경 가능함.)

탭4 Custom Fields

  • Select date by: HTML tag 선택함
    Tag: p
    Attribute: class
    = Value: date

탭5 Categories & Tags

  • ‘미분류’ 선택함 (나중에 일괄 변경 가능함)

탭6 Tools

  • import 끝나고 난 후에 여기로 돌아와서 regenerate the redirects 를 클릭하면 .htaccess 에 넣을 내용을 볼 수 있다 (복사해서 텍스트 파일로 만들어 둔다. 글을 여러 번에 나누어 import 했으면 모든 글을 import 한 후에 여기로 와서 클릭하면 된다. 나중에 없어질 수도 있으니까 복사해 두려면 즉시 하는 게 좋다).

티스토리 백업 html 파일 이름 변경 (sed)

예시:
1234-글-제목.html -> 1234.html

이렇게 하지 않고 import 했더니 슬러그가 망가져서 못쓰게 되었다. 그러나 저렇게 이름을 숫자로 변경해 놓으면 1234가 슬러그가 되므로 워드프레스에서 고유주소를 /%postname% 으로 해도 링크가 깨지지는 않는다. 나는 사실 고유주소를 /%post_id% 로 할 거지만 그래도 언젠가 마음이 바뀌어 /%postname% 으로 바꿀 수도 있는 거니까 제대로 해놓았다 (이렇게 하지 않고 나중에 빠른 편집으로 글 하나하나씩 슬러그를 바꿀 수도 있지만 글이 조금만 많아도 너무 힘들다.)

Word 님은 Bulk Rename Utility 라는 프로그램을 이용해서 파일 이름을 변경했다고 한다. 나는 리눅스 터미널에서 아래의 명령을 내려서 일괄변경하였다.

$ cd 내-티스토리-아이디-1-1
(백업 추출 디렉토리의 아래로 이동한다는 말. 거기서 아래의 명령을 내렸다.)
$ find ./ -name "*.html"  | sed -e 'p' -e "s/-.*.html/.html/g" |xargs -n 2 mv

나는 PC가 리눅스 운영체제라서 여기서 변환하여 호스팅 서버로 올렸다. 윈도 사용자들은 호스팅 서버의 운영체제가 리눅스이면 ssh 로 접속하여 저 명령을 내리면 된다. 그런데 SSL 인증서를 발급 받아야 ssh 접속이 가능하고, SSL 인증서 발급받기 전에 도메인을 먼저 연결해야 한다(무료 도메인 말고 앞으로 내가 쭉 쓸 나만의 도메인을 연결해야 함. SSL 인증서는 도메인에 발급되는 것으로 도메인이 바뀌면 SSL 인증서 발급 신청도 다시 해야 함. 돈을 또 내야 한다는 말이다).

그러니 서버에서 저 명령을 내리고 싶으면 다음의 과정을 거친 후에 서버에 ssh 접속을 해야 한다:

  • 도메인 구매 -> 호스팅에 도메인 연결 -> 호스팅 회사에 SSL 발급 신청함 (내 호스팅 회사는 SSL 인증서 자체는 무료인데 설치비가 2만 원이다.)

ssh 접속은 다음과 같이 한다 (포트 번호 2022는 호스팅 회사에 따라 다를 수도 있음):

$ ssh -p 2022 아이디@example.com

또는

$ ssh -p 2022 -l 아이디 example.com

그림과 첨부 파일이 import 안 되는 문제

글 80개를 한꺼번에 import 하니까 그림과 첨부 파일이 안 따라온다. 글을 20개씩 나누어서 import 하면 그림과 첨부 파일까지 잘 들어온다.

내가 PC 에 설치된 워드프레스로 티스토리 백업을 가져올 때 그림과 첨부 파일이 빠지는 현상이 발생했다. 그러다가 우연히 글 20개만 import 하니까 그림과 첨부 파일이 빠지지 않았다. 즉, 티스토리 백업을 한 폴더에 글 20씩 분리하여 하나씩 순서대로 import 하니까 모든 글이 무사히 import 되었다. 왜 이렇게 해야 하는지는 나도 모른다. 아마 웹서버 설정상의 문제일 수 있겠다. php.ini 등등. 내 PC 서버와 달리 웹호스팅 회사의 서버는 전문가들이 잘 설정해 놓았을 테니 이런 문제가 없을지도 모른다. 귀찮아서 끝까지 확인해 보지는 않았고 웹호스팅에 설치된 워드프레스에 글을 옮길 때도 20개씩 나누어 import 하였다. 나는 글이 80개도 안 되어서 그냥 이렇게 하고 끝냈지만, 글이 아주 많은 사람은 20개보다 숫자를 더 늘려서 어디까지 늘려서 해도 문제가 없는지 실험해 볼 수 있겠다.

  • 글 20개씩 들어 있는 디렉토리를 ftp로 웹서버에 하나씩 올리면서 하나씩 import 하였다. 하나 할 때마다 경로 설정을 수정했다 (설정 -> HTML Import -> – 탭1 Files -> Directory to import: /host/home2/아이디/import/내-티스토리-아이디-1-1a 등등)

나는 다음과 같이 나누어서 했다:

내-티스토리-아이디-1-1a
내-티스토리-아이디-1-1b
내-티스토리-아이디-1-1c
내-티스토리-아이디-1-1d

HTML Import 2 실행

도구 -> 가져오기 -> HTML -> 가져오기 실행 (또는 설정을 저장하면 가져오기가 바로 실행된다). -> 다음과 같은 내용이 나온다:

  • What are you importing today?
    a directory of files 를 선택한다.
    Choose File: 서버에 미리 올려놓은 백업 디렉토리를 선택한다.
    Submit 을 선택하면 실행된다.
  • 화면에, 먼저 .htaccess Redirects 창이 표시된다.
    잠시 후 그 아래에 그림과 첨부 파일의 가져오기 메시지가 표시된다 (이 내용이 표시되지 않으면 그림과 첨부 파일을 못 가져왔다는 뜻임 -> 원인 분석을 해서 import 된 글을 모두 지우고 처음부터 다시 한다).
  • 모두 import 했으면, 글 -> 모든 글 -> 화면 옵션 -> 페이지당 항목 수: 100 등 큰 숫자로 변경한다 -> 적용:
    글이 제대로 올라왔는지 살펴본다.

숫자 주소 변경

티스토리와 워드프레스의 숫자 주소를 같게 만들었다.

고유 주소를 /%postname% 으로 설정하면 이미 티스토리와 워드프레스의 숫자 주소가 같아진 셈이다(워드프레스의 문자 주소에 티스토리의 숫자 주소가 들어가서 그럼). 나는 티스토리에서 숫자 주소를 사용했고 워드프레스에서도 그럴 생각이다. 어떤 이들은 SEO 를 언급하면서 문자 주소 즉 문자 슬러그를 쓰라는데 나는 불편해서 그렇게 못 하겠다. 문자 슬러그의 이득이 그리 크지 않을 수도 있다. 내가 틀렸을 수도 있으므로 좀 더 두고 보기는 하겠다.

티스토리의 숫자 주소에 해당하는 것이 /%post_id% 이다. 클릭해서 넣으면 /%post_id%/ 라고 되는데 끝의 슬래시가 눈에 거슬려서 나는 떼버렸다(주소창에서 달라 보일 뿐, 기능상 차이는 없는 듯).

워드프레스는 숫자 주소가 무작위로 붙는다.

티스토리에서는 숫자가 1, 2, 3, 4,… 즉, 순서대로 글 번호가 붙는데 워드프레스는 무작위로 %post_id% 가 만들어진다. 보통 6자리 숫자로 만들어진다. 이건 어쩔 수 없다. 적응해야 한다.

그래도 티스토리에서 가져온 글은 티스토리의 글 번호 즉 숫자 주소를 똑같이 유지하고 싶다. 원래는 301 리디렉션 설정을 염두에 두고 그렇게 했지만 리디렉션 설정을 못 한 지금도 이렇게 한 걸 잘했다고 생각한다. 티스토리의 어떤 글이 워드프레스의 어떤 글로 import 됐는지 주소만 봐도 바로 알 수 있으므로 여러모로 아주 편리하다.

  • 나중에 검색엔진 색인 삭제, 생성할 때도 아주 도움이 된다.

위에서 만들어 놓은 .htaccess 파일을 보면서 워드프레스로 import 된 글들의 %post_id% 즉 글 번호를 검색/치환하려고 한다. 그러나 워드프레스 관리자에서는 %post_id% 를 바꿀 방법이 없어서 고민하였다.

phpMyAdmin 이용

phpMyAdmin 을 이용하여 데이터베이스 테이블에서 직접 %post_id% 를 수정하였다. 글이 몇 개 안 되는데도 번거롭고 시간이 오래 걸렸다.

Better Search Replace 플러그인 이용

나중에 보니 Bettter Search Replace 라는 플러그인이 있다. 이걸로 내부 링크를 일괄변경하였는데 다른 문자열도 검색/치환 할 수 있다. 데이터베이스의 어느 테이블까지 적용할지 말지 선택할 수 있어서 아주 좋다. 이 플러그인으로 %post_id% 를 치환한다면 phpMyAdmin 으로 하는 것보다는 훨씬 편할 것이다.

참고 글

티스토리 백업 파일을 이용하여 워드프레스로 이사하기

Leave a Comment