Skip to main content

Command Palette

Search for a command to run...

all-in-one wordpress migration exodus

Published
all-in-one wordpress migration exodus

이전 포스트에서도 밝혔듯, all-in-one wp migration의 복원 유료화 이슈로 wordpress에서 hashnode로 이주해왔습니다. 기존에 가지고 있던 백업본으로부터 살리고 싶은 몇 개의 포스트만 살리고 나머지는 그냥 조용히 백업의 상태로 두려고 합니다.

복원하려는 포스트는 아래와 같습니다.

  • Introduction to LLVM (1) ~ (3)
  • Bootstrapping
  • Vue & Vuex Convention
  • Callback naming convention for Front-end

위 4개의 시리즈(포스트 숫자로는 6개)를 복구할 예정이며, 다른 포스트를 클릭해서 블로그에 들어왔지만 찾을 수 없는 경우, 댓글로 남겨주시면 시간이 날 때 복구해보겠습니다. (메일 남겨주시면 메일로도 알려드릴게요.)


wordpress, ghost, hugo, gatsby 등 많은 블로그 플랫폼을 써보거나 시도해봤는데, 지금까지는 hashnode의 글쓰기 경험이 가장 마음에 드는 것 같네요. markdown으로 바로 publishing이 가능하다는 것이 좋은 것 같습니다. 이전에도 typora를 유료 버전으로 구입해서 글쓰기 툴로 썼을정도로 markdown을 선호하는 편인데, 깔끔한 markdown 에디터가 있어서 무척 마음에 듭니다.

cover image가 기본적으로 들어가는 것도 좋고, unsplash에서 제가 따로 이미지를 다운받아서 업로드하지 않고 바로 unsplash에서 고를 수 있는 것도 좋습니다.

console.log('hello, world!');

code snippet도 나쁘지 않게 동작하는 것 같고

gist embedding도 정상적으로 동작하네요.

firefox에서 darkmode extension을 사용 중인데 깔끔하게 변환되는 것도 좋습니다.

medium도 잠깐 고민했었는데, 최근부터 더 이상 커스텀 도메인을 연결할 수 없다고 하더라구요. 거기에 개발자 친화적인 에디터는 아니어서 gist를 필수적으로 가져다 써야했던 것이 조금 아쉬웠는데, 그런점까지 hashnode는 잘 커버해주는 것 같습니다.

단점도 없는 것은 아닙니다. 예약을 걸어놓은 포스트를 수정하기 위해서는, 먼저 예약을 취소해서 포스트를 draft로 전환한 뒤에 바꿀 수 있으며, 이 ux가 직관적이지 않네요. 현재 포스트를 보고 있는 페이지에서 수정 버튼이 보이지 않는 것도 조금 아쉬운 느낌입니다. 혹시 제가 있는데 발견하지 못한 것이라면 댓글로 알려주세요 😅

위 이슈는 hashnode의 일시적인 이슈였던 것 같기도? intercom으로 해결했습니다.

또한, 하나의 Gist에서 여러 개의 소스파일을 가진 경우, 하나의 소스파일만 임베딩 할 수는 없네요. 코드 스니펫이 나쁘지 않게 지원되니까 적당히 넘어가려고 합니다.


일단 운영 중인 블로그가 이미 있는 경우에는 export를 해서 깔끔하게 빼올 수 있으니 그것을 사용하는 것이 좋고, 저처럼 블로그를 날려버린 뒤 wpm의 restore가 유료화되었다는 것을 뒤늦게 깨달아버린 경우에는 아래와 같이 대처하시면 됩니다.

unzip

npx wpress-extract your_file.wpress

wpress-extract를 이용해서 압축을 해제할 수 있습니다.

images

압축을 해제하면 사진은 uploads 폴더 하위에 위치합니다.

posts

포스트같은 경우 database.sqlSERVMASK_PREFIX_posts 테이블에 저장되며, insert문 하나당 하나의 레코드를 삽입하는 식으로 쓰여져 있기 때문에, 어디선가 restore하다가 터지더라도 "row1에서 뻑났다." 라며 힌트도 없이 죽습니다. 저는 vscode에서 SERVMASK_PREFIX_posts 테이블 ddl과 dml을 제외한 나머지 sql들을 모두 지우고, INSERT INTO를 regex replace를 사용해서 multiple record insert문으로 전환해서 migration을 실행했습니다.

터지는 record가 있으면 지우거나 터진 문자열을 보고 적당히 수정해줬고, 제가 살리려는 포스트가 많지 않았기에 터진 record는 전부 삭제하고 database에 restore할 수 있었습니다. 이후, import가 완료된 mysql database를 다시 export하고, 그것을 압축해서 제 개인 구글 드라이브에 업로드하여 아카이브를 완료했습니다.

image.png

복구하려는 6개의 포스트들은 현재 이 restore된 mysql table에서 post_content 컬럼값을 읽어 uploads 폴더 하위의 이미지와 조합해서 hashnode에 업로드 예정입니다.

More from this blog

Auto-Switch iTerm Profiles on SSH Connection

미국에 있는 서버와 한국에 있는 서버는 핑 차이가 크다. 미국서버에 배포하던 서비스를 최근에 한국으로 옮기니, 로컬 개발 터미널인지 라이브인지 구분이 힘들어졌다. 좋은 방법이 없을까 고민하던 차에 내가 발견한 방법을 공유한다. 1/ 프로필을 생성한다. 나는 평소에 밝은 테마(light theme)를 사용하기 때문에 이 프로필은 어두운 테마(dark theme)로 설정했다. 2/ 라이브 환경으로 접속하는 커맨드(e.g. ssh)에 대해 다음과 ...

Nov 23, 2025
Auto-Switch iTerm Profiles on SSH Connection

warp directory `wd`

터미널에서 특히 자주 찾게되는 폴더들이 있다. nvim 설정 디렉토리, 회사 git repo 디렉토리, 개인 git repo 디렉토리 등등. 이런 디렉토리들을 즐겨찾기처럼 등록하고, 즐겨찾기 목록을 볼 수 있고, 즐겨찾기에 등록된 곳을 바로 이동할 수 있게 만들어주는 스크립트가 https://github.com/mfaerevaag/wd 다. 해당 페이지에 있는 Setup 섹션을 참고해서 설치하자. oh-my-zsh의 경우 plugins에 wd...

Oct 18, 2025
warp directory `wd`

macOS에서 키보드로 출력 오디오 장치 바꾸기

최근에 헤드폰을 하나 샀다. 하지만 헤드폰으로 듣다가 밥을 먹을 때는 맥북 스피커로 바꾸고 싶다. 그렇게 출력 장치를 바꿀 때마다 상단의 제어센터 버튼을 눌러서, 오디오 버튼을 누르고, 위 스크린샷에서 원하는 장치를 고르는 것은 매우 귀찮더라. 키보드 “딸깍”으로 오디오 출력 장치를 바꿀 수 있는지 찾아봤고, 그 결과를 공유한다. https://github.com/deweller/switchaudio-osx 를 활용한다. SwitchAudioS...

Sep 12, 2025
macOS에서 키보드로 출력 오디오 장치 바꾸기

토막글 다섯 개 (5)

1. PR Approve에는 장미를 한 송이 🌹 팀원의 풀 리퀘스트를 Approve 할 때, LGTM와 같은 인삿말도 좋지만 나는 장미를 쓴다. 낭만 있고, 메신저에서 PR Approve 구걸을 할 때 장미를 부탁한다고 하거나, 팀원의 Approve 부탁 메세지에 장미 이모지로 답변하기 참 좋아서 애용하고 있다. PR Approve와는 전혀 상관없는 개념이지만 업무에서 자주 쓰이지 않는 심볼이라면 어느 거라도 적당히 재미있어 추천한다. 2. ...

Aug 19, 2025
토막글 다섯 개 (5)

olaf.kr

50 posts

그 날 기분에 따라 반말과 존댓말을 섞어씁니다.