投稿の移行先
WordPress の移行先は、Wordpressのインストールが済んで全ての設定が終了している状態、ブラウザからWEB画面の表示ができていること。
あと、ドラブル回避のため、投稿等は何も入っていないのが条件だ。
投稿の移行をするための情報
投稿を移行するには、画像とデータベースの一部を移行すれば良い。
画像のディレクトリは、
debian
シングルサイト
/var/www/wordpress/wp-content/uploads/
マルチサイトでは、少しディレクトリが異なるので次の投稿で記すことにする。
データベース内の投稿のテーブル
prefix が wp_ でシングルサイトならば、
wp_posts
wp_postsmeta
この2つのテーブルを新しいデータベースに移行すれば良い。
phpMyAdmin
テーブル内の変更が必要なので、
phpmyadmin
を使えるようにしておこう。
インストール方法は、
apt install phpmyadmin
ln -s /usr/share/phpmyadmin /var/www/wordpress/ <-- ドメインルートを指定
移行元と移行先のサーバーの両方ともphpMyAdminをインストールする。
phpmyadmin install
debian nginx のためのphpmyadmin のインストール方法
ファイルの移行
画像の移行をする。
debian のディレクトリだが、
/var/www/[wordpressのディレクトリ]/wp-content/uploads/
以下のファイル
ls -al /var/www/wordpress/wp-content/uploads
drwxr-xr-x 4 www-data www-data 4096 Apr 2 17:02 2025
年ごとに月ごとにディレクトリで分類される。
これらの画像ファイルを移行先の同じディレクトリにコピーする。
移行先のサーバーのアドレスを 192.168.10.50 とする、また、ユーザーが root でsshでログインできる設定とする。
※ root の権限がない場合は、一旦、ユーザーのhome ディレクトリにファイルを転送してから、サーバー内でコピーする方法もある。
移行元と移行先のディレクトリが同じとする、2000年以降のファイルとすると、ワイルドカードを使って、[ 2* ]とフォルダー指定して
scp コマンドを使って、
# scp -rC /var/www/wordpress/wp-content/uploads/2* root@192.168.10.50: /var/www/wordpress/wp-content/uploads/
※ 移行先に同じ名前のファイルがある場合は上書きされるので注意したい。
データベースの移行
移行元で
mysqldump でも不可能ではないが、mysqladminを使うことにしたい。

この場合、データベース名「 krm 」のテーブル 「 kr_ 」を移行します。
投稿を移行するので、
postmeta , posts
なので、ここでは、
kr_postmeta , kr_posts
にチェックを入れて

チェックしたものを: (今回は2つのテーブルだけ)
「エクスポート」を選んで、エクスポートボタンをクリックすると、ローカルPC内にダウンロードされる。
krm.sql.zip
というファイルである。(phpMyAdminは、zipで圧縮されている状態でないとインポートできないので注意)
※ Macは、デフォルトで自動解凍されるので、再圧縮するか、圧縮されない設定をする。Safariの使用だと、設定 -> 一般 -> ☑️ダウンロード後、”安全な”ファイルを開く のチェックを外して、Safari を終了して起動しよう。
移行先で
移行元と同様に、phpmyadmin を使う。
目的のデータベースをクリック①して、インポートボタン②から、ローカルPCのファイルを指定して目的のデータベースにテーブルをインポートする。
この場合は、テーブル
kr_postmeta
kr_posts
が、データベース wpdb にインポート③された。

テーブルの内容を修正
サーバーのURLの変更があった場合は、修正が必要になる。
※ http://example.com -> https://example.jp のような変更
テーブルを選択してインライン編集する
この場合のテーブル名を
kr_postmeta
kr_posts
とすると、
UPDATE kr_posts
SET post_content = REPLACE(
post_content,
'http://example.com/',
'https://example.jp/'
);
UPDATE kr_posts
SET guid = REPLACE(
guid,
'http://example.com/',
'https://example.jp/'
);
テーブルを挿入
移動元のテーブルを移動先のテーブルに挿入する
注意)同一のテーブルが存在する場合の処理をスキップする設定したが、トラブルの可能性はある。
移動先のテーブル名を
wp_postmeta
wp_posts
とすると、
INSERT IGNORE INTO wp_posts
SELECT * FROM kr_posts;
INSERT IGNORE INTO wp_postmeta
SELECT * FROM kr_postmeta;
移動元のテーブルを移動先のテーブルに挿入されているはずです。
移行に使った元のテーブルは残っているが、うまく動作したら消去しても良い。
DROP TABLE
を使う