既存の静的ファイルはS3に移行【#np2020】

WordPress Logo
MovableTypeからWordPressに移行するにあたり、画像も移行しよう(MovableTypeの「アイテム」からWordPressの「メディア」へ)かと思いましたが、URLの切り替えが面倒すぎるし、メディアの中で収拾が付かなくなるのは火を見るより明らかなのであえて移行しないことに決めました。もちろんWordPressで新しく書く記事についてはWordPressのメディアを利用して管理しますが、既存記事の画像は全てAWS S3に入れてしまうことに。


手順はシンプルで、

  1. 画像を一旦ローカルにダウンロード
  2. AWS S3にバケット作ってアップロード、公開設定
  3. ドメインを置換

これだけで画像を表示出来るようになります。

  • https://nplll.com/assets/2019/08/sick_rougan.png
    → https://nplll-static.s3-ap-northeast-1.amazonaws.com/assets/2019/08/sick_rougan.png

8/19以前に書かれた記事は、画像が置き換わっていますが特に問題なさそうですね。

歳を取ると人間は「劣化」していくんだなあとしみじみ思う – NOBODY:PLACE



以下、いくつか補足です。



ターミナルを使ってファイルを一括ダウンロード

scp -P ポート番号 -i ~/.ssh/id_rsa -r ippei@hoge.com:/web/www/public/assets ダウンロードするディレクトリ


これでサーバにSSH接続した上で任意の場所にファイルを一括ダウンロードできます。便利。



ドメインの置換はSQLクエリで

プログラムを用意するのは面倒だったので、SQLクエリで。


クエリの例

UPDATE wp_1_posts
SET post_content=REPLACE(
 post_content,
 "https://nplll.com/assets_c/",
 "https://sample.s3-ap-northeast-1.amazonaws.com/assets_c/"
);


これで本文中の画像のドメインが置き換わります。
(実行する際には必ずバックアップを取ってから行ってください。巻き戻せません)


ちなみにSQLで置換する場合正規表現が使えないので、正規表現を使って一括置換したいような場合には、プログラムを用意する必要があります。