数GBの巨大なwordpressをサーバー移行

5GBを軽く超えるWordpressのブログをサーバー移行する作業をしました。

 

作業時間は6時間くらいです。

そのうち5時間くらいは元サーバーのバックアップ時間でした。

 

今回用意したもの

1. SSHでログインできるブログ移行先レンタルサーバー(さくら、XServer、チカッパ、hetemlなど)

2. 「UpdraftPlus」というWordpressのプラグイン

3. Googleドライブなどのストレージ

以上3つです。

 

実際の作業を簡単にまとめておきます。

 

その1

移行元のWordpressのプラグイン画面で、UpdraftPlusをインストールします。

このプラグインを使うと、ブログの管理者がWordpressのバックアップを取ることが可能です。

今回はGoogleドライブにバックアップを取ることにしました。

 

その2

今回はバックアップにGoogleドライブを使いました。

無料で15GB使えますから、容量は十分です。

 

GoogleドライブのAPIを有効にして、API ProjectでClient IDを発行します。

手順はこちらを参考にしてみてください。

 

UpdraftPlusの設定でバックアップ先をGoogleドライブにすると

「You must add the following as the authorised redirect URI」と表示される箇所があって、その下の灰色の部分をコピーします。

Google API Projectの「Create Client ID」の画面で「Your Site or hostname」の欄に、このコピーした部分を貼付けしてCreate ClientIDボタンを押すと「Client ID」と「Client Secret」が発行されます。

これをUpdraftPlusの画面に設定します。

 

Google Drive Folder IDは、Googleドライブでフォルダを作って、フォルダに移動するとURLの最後に

#folders/XXXXXXXXXXXXXXXXと長い文字列が付いているはずです。

このXXXXXXXXXXXXXXの部分を設定します。

 

その3

UpdraftPlusの画面で「今すぐバックアップ」ボタンを押します。

オレンジのバーが伸びてきて、バックアップが始まります。

既定値で800MBを超えるとファイルが分割され、ローカルでバックアップファイルができるまで30分強といったところでした。

その後で順次Googleドライブにファイルがアップロードされるので、そのまま4時間ほど放置します。

 

その4

バックアップで放置している間に、移行先のサーバーに移行元と同じバージョンのwordpressをインストールしておきます。

テーブルのプレフィックスは移行元のブログと合わせて置く必要があります。

インストールが完了すれば、他は何もしなくてもOKです。

 

その5

Googleドライブにバックアップしたファイルが複数存在しているはずです。

今回は

xxxxxxxxxxxxx-db.gz
xxxxxxxxxxxxx-others.zip
xxxxxxxxxxxxx-plugins.zip
xxxxxxxxxxxxx-themes.zip
xxxxxxxxxxxxx-uploads.zip
xxxxxxxxxxxxx-uploads1.zip
xxxxxxxxxxxxx-uploads2.zip
xxxxxxxxxxxxx-uploads3.zip

など、uploadsについては800MBで分割されてファイル名に連番がつきます。

これらをダウンロードして、移行先サーバーのWordpressのなかのwp-content内に全て転送します。

 

その6

移行先サーバーにsshでログインし、wordpress内のwp-contentに移動します。

シェルで

ls *.zip| while read line;
do unzip -o  $line
done

でzipを全部上書き解凍

これで

language
plugins
themes
uploads

が上書きされて元のブログと同じデータになります。

 

次に

gzip -d XXXXXXXXXXXX-db.gz

でDBをバックアップしたSQLを解凍して

mysql -u ユーザー名 -h mysqlサーバー -pパスワード DB名 < XXXXXXXXXXXX-db

でmysqlをリカバリーします。

 

テーブルのプレフィックスがwp_だったとすると、

リカバリー後、phpMyAdminなどでDB内のwp_contentsの

option_name = 'recently_edited

のレコードに絶対パスが書いてあるので、移行先サーバーに合わせて修正します。

 

これでブログの移行ができました。

 

このプラグインを使うとファイルが圧縮されるので、全てFTPで作業するよりも時間が短縮されます。

有料の機能もいろいろとありますが、無料で使える機能だけで移行ができました。