📘

esa から Github へのデータ移行

2 min read

やったこと・動機

esa から Github のプライベートリポジトリへ markdown+画像データ一式を移した。

esa とはチームのドキュメント共有サービス(月額500円/人)であり、それを個人でここ3年くらい使っていた。

基本的に個人で手を動かした技術情報の備忘録を手元に記録しておくためで、基本非公開で備忘録として利用していた。

今回移行を考えた理由は、2021年夏にちょうどクレジットカードの更新が来て、そのとき esa への支払いが滞り、esa から2ヵ月そのまま放置するとデータを全削除する旨連絡が来ていたためである。

もしそうした連絡を見落とし、更新手続きを忘れていた場合、これまで蓄積してきた自分のデータが全削除されてしまうという事実にはたと気づいたのである。

移行先

マークダウンの書ける無料のブログサービスとして次のような移行先を考えた。

  • Qiita
  • Zenn
  • はてなブログ
  • Notion
  • Github

今回結果的に Github を選んだのだが、選び方としては消去法で下記3点から決まった。

  1. はてなブログ、Qiita はプラットフォームの将来的な存続に疑問がある点。新しいサービスの台頭によるユーザー乖離の影響でサービス終了やサービスの改悪に繋がる可能性がありそうなため
  2. Notion は一度使うとサービスにデッドロックされるという記事 があったため
  3. Zenn はそもそも非公開記事の投稿ができないため(基本公開が前提)

一方、Github であれば ①プラットフォームとして存続性は他のブログサービスより高く②プライベートリポジトリで管理すれば基本非公開で運用できる という他のブログサービスでは満たせなかった点がクリアできている。

以下では、その方法を紹介する(同じようにブログサービスの移行を考えている人向け)。

手順

1. esa から markdown データのエクスポート

こちら を参考に esa から markdown をエクスポートする。

2. markdown データのフォルダ/ファイル名の半角スペースを"_"に置換する

シェルで markdown ファイルのリストを作る場合フォルダ/ファイル名に半角スペースが含まれているとファイル名が途中で区切られてしまう。

そのため 1. で落としてきた zip ファイルを展開し、フォルダ名や markdown ファイル名の半角スペースを "_" に置換する。例えば こちら を参考。

ファイルの半角スペースを"_"へ置換コマンド
find . -name "*.*" | grep " " | sed -e 's/.*/"&"/; p; s/ /_/g' | xargs -n2 mv

3. markdown ファイルのパスが記載されたテキストファイルを作成する

下記コマンドで markdown ファイルのパスが記載されたテキストファイルを作成します。ここでは md_list.txt というテキストファイルに markdown ファイルパスが記載されます。

find (1.でエクスポートしたesa の markdown データフォルダパス)/ -name "*.md" | xargs -n1 > md_list.txt

4. markdown article tools のインストール&実行

こちら をインストールし、下記コマンドを実行します。markdown ファイル内の画像URL から画像ファイルをダウンロードし、markdown ファイルと同じ階層の images/ というフォルダに格納されます。

for line in `cat md_list.txt`; do python ./markdown_tool.py -i html+md -t 60 -R "$line"; done

5. Github にプライベートリポジトリを作成し、4.のフォルダをアップロードする

あとは Github にプライベートリポジトリを作成し、そちらのリポジトリに 4.で画像をダウンロード済みの markdown ファイル群を全てアップロードする。

例えば 以前書いた要約の記事 も下記のようにじぶんのプライベートリポジトリ上で非公開の形で確認できる。

おわり

  • ひとまず esa に置いていた markdown 記事を Github プライベートリポジトリへの移行ができた
  • esa 自体有償サブスクである以外サービスとしてはそこまで不満はないので使い続けるかはしばらく両方使いつつ様子見る予定
  • ちなみに note もブログプラットフォームとして使っているが2021年10月20日現在エクスポート機能が存在しないという邪悪な面があることが判明したので、エクスポート機能ができるまでしばらく利用は控えても良いかと考えている

Discussion

ログインするとコメントできます