Blog 이전하기 (2023)
10년도 더 전에 static site generator를 쓰는 것으로 이전해보겠다했었는데, 정작 이제야 실행에 옮겼다. 모든 걸 다 옮긴 것은 아니고 아래처럼 옮겼다.
- 2011년 및 그 이후의 (거의 모든) 글들. 그 이전 글들은 draft상태로 저장만 해놨는데 언제 살릴진 모르겠다.
- 페이지로 작성한 글들. 아직 공개하지 않았고 차차 살릴 생각.
- 이전 permalink.
/blog/archives/{numeric-post-id}
형식의 링크는 모두 유지. 이걸로 Google 검색은 가능한 범위 내에서 안깨보려고 노력했다.
댓글 포함한 일정 부분은 포기. DB 백업이 있으니 되살릴 순 있지만 당장은 계획이 없다.
어떻게 옮겼는가?
우선 wordpress-to-hugo-exporter 를 이용해서 CLI로 덤프했다. 그리고 가져온 markdown 파일에서 일부분을 수정했다.
- 모두 draft로 전환:
find . -type f -name '*.md' -exec gsed -i -E -e 's/^title:/draft: true\ntitle:/' '{}' ';'
- 각 글에서
type: post
제거. 이거 빼야 렌더링이 되더라.find . -name '*.md' -exec gsed -i -E -e '/^type: post/d' '{}' ';'
- 시간대가 UTC로 잡혀서 이걸 UTC+9 로 변경1
이러고 나선 개별 글을 1년 단위 씩 묶어서 검수하면서 변환했는데, jetpack markdown 기능을 쓴 경우 HTML 태그가 많이 남아있어서 바로 쓸 수 없었다. Python markdownify를 써서 아래 명령을 만들었다:
#!/bin/bash -e
markdownify \
| cat -s \
| gsed -E -e '/^$/d' -e 's/[ \t]+$//'
그리고 이걸 vim에서 :'<,'>%!markdownify.sh
해서 변환했다. 생각보다 수작업이 좀 필요해던 것은 내부 링크 살리는 부분이었는데, 이건 간단히 짠 스크립트로 안되어서 손으로 좀 많이 고쳤다.
대강 10년치 검수하고나니 공개하기로 결정. 나머지는 시간이 해결해주겠지. 여기까지 오는데 휴일 2일 포함해서 4일을 썼다.
-
아래와 같은 스크립트를 만들어서 썼다. 한국 표준시가 DST였다면 이렇게 간단하겐 안되었을 것.
↩︎git grep --files-with-matches '^date:.*+00:00' \ | xargs -n 1 bash -c \ 'DT=$(TZ=ETC/UTC date -j -v+9H -f %Y-%m-%dT%H:%M:%S\+00:00 \ $(egrep "^date: .*\+00:00" $0 | cut -d" " -f2) \ \+%Y-%m-%dT%H:%M:%S+09:00); \ gsed -i -E -e "s/^date:.*$/date: $DT/" $0'