今回、さくらのクラウドをやめて、さくらのVPSを使うことにしました。ただ、さくらのクラウド内でなら、同じSSDやHDDを他のサーバに使うことができますが、さくらのクラウドから別のクラウドサーバや別のVPSなどのサービスに移行しようとしたい時などはそうはいきません。また、データベースを移行するためだけにphpmyadminを用意するのもかえって面倒臭い。
それならコマンドで全て済ましてしまえ!と思ったのです。

WordPressディレクトリをtarで圧縮する

wordpressがインストールされているディレクトリの中身を全て圧縮します。ディレクトリをそのまま圧縮しても良いと思いますが、KUSANAGIの場合はディレクトリの所有者や権限なども振ってあるはずなので、中身を1つのファイルに圧縮する方が後腐れなくて楽です。

tar zcvf 181219wordpress.tar.gz *

SQLファイルのバックアップ

mysqldumpでダンプする内容をsqlファイルにリダイレクトします。僕は大体いつも181217wordpress.sqlみたいなファイル名でリダイレクトしています。そうすればいつ取ったバックアップなのか判断できます。

mysqldump -h localhost -u ユーザ名 -p データベース名 > 181219wordpress.sql

ちなみに作成した2つのファイルは、この後で新サーバからsftp接続してgetするので、kusanagiユーザのホームディレクトリにmvしておくのが楽です。
以上でバックアップ完了です。

移行先のKUSANAGIでWordPressの初期設定をして中身を消す

僕はさくらのクラウドでKUSANAGIを使ってWordPressを動かしています。サーバの設定などを一括で設定できるし、ページの表示速度がめちゃ早いのでさくらのクラウドに実装されてからずっと愛用しています。

で、限りなく同じサイトの設定で真っ新なWordPressを、移行先のサーバでセットアップしておきます。セットアップが終わったら、即座にwordpressディレクトリの中身を全部消します。良いんです消して。その場所でtarを解凍しますから。

cd wordpressインストール先のディレクトリ
rm *
(-rfオプションを付ける場合は自己責任で)

sftpで移行元からダウンロードする

tarで圧縮したディレクトリそのもののバックアップと、mysqldumpで吐き出したsqlファイルを移行元からダウンロードします。ftpクライアントとかで一度ローカルを経由すると時間がかかります。どうせならサーバ直でいきましょうよ。それならSSHのプロトコルを使ったsftpが良いです。

sftp kusanagi@旧サーバのIPアドレス or ドメイン名
(ポート番号を変更している場合は -Pで指定する。僕は22番から絶対に変更する)

get さっき用意したtarやらsqlやら

ダウンロードしたファイルを展開する

ダウンロードが終わったら、tarのファイルをさっき中身を全部消したディレクトリで解凍します。そうすれば、移行前と同じファイル群が展開できています。

tar -xvf 181219wordpress.tar.gz

それと、SQLファイルはmysql コマンドでインポートします。

mysql -u root -p データベース名 < 181219wordpress.sql

コマンドはええぞ!

そこそこの知識が必要で、コマンドを打つことが楽しくないとできないと言われていますが、僕はそんなに抵抗がないんですよね。

それに、本当はAll-in-One WP Migrationとかでサクサクらくらくバックアップを取りたいんですけど、このブログのディレクトリは3GBを超えていますし、SQLファイルだってそのままだと421MBあるわけですよ。phpmyadminもびっくりして受け付けてくれませんよ。zipで圧縮したら80MBくらいにはなりましたけど、ブラウザからインポートとかとても怖くてできない。

僕はもう4年ほどこの方法でサーバの移行作業を行なっています。
コマンドだけでやれるので本当に楽です。最近はさくらのVPSもお試し期間の転送速度を上げてくれたので、ますます気に入りました。
容量が許す限り、cronでスケジューリングするのも良いですね。

CodaとiPadとHHKBBTがあれば、これも出先から全部やれちゃいます。良い時代になったもんだホント。