閉じる

技術ブログ

【WP-CLI】ファイルやデータベースのバックアップ方法

2026.03.02

WP-CLIを使えば、WordPressのデータベースやファイルのバックアップをコマンド一発で実行できます。
管理画面にログインする必要もなく、SSH接続さえできれば即座にバックアップが取れるため、サーバー移行や緊急時の対応に非常に有効です。


1. データベースのバックアップ

1-1. データベースをエクスポート(SQLダンプ)

たった1行のコマンドで、WordPressのデータベース全体をSQLファイルに書き出せます。

wp db export backup.sql

→ Success: Exported to ‘backup.sql’.

1-2. ファイル名に日付を付ける

運用では日付を付けて管理するのが定石です。

wp db export backup_$(date +%Y%m%d_%H%M%S).sql

→ Success: Exported to ‘backup_20260302_143000.sql’.

1-3. 特定のテーブルだけバックアップ

投稿データだけ、ユーザーだけなど、テーブルを絞ることもできます。

# wp_postsテーブルだけエクスポート
wp db export –tables=wp_posts posts_backup.sql
# 複数テーブルを指定
wp db export –tables=wp_posts,wp_postmeta,wp_options partial_backup.sql

1-4. データベースの復元(インポート)

バックアップからの復元もコマンド一発です。

wp db import backup.sql

→ Success: Imported from ‘backup.sql’.

注意: インポートは既存データを上書きします。
本番環境で実行する前に、現在のDBをバックアップしてから行ってください。

2. ファイルのバックアップ

WP-CLI自体にはファイルバックアップの専用コマンドはありませんが、WP-CLIと組み合わせてシェルコマンドで効率的にバックアップできます。

2-1. WordPress全体をtar.gzに圧縮

# WordPressディレクトリ全体を圧縮
tar -czf wordpress_backup_$(date +%Y%m%d).tar.gz /var/www/html/

2-2. wp-contentだけバックアップ(推奨)

WordPress本体(コア)はいつでも再インストールできるので、通常は wp-content だけバックアップすれば十分です。

# wp-content(テーマ・プラグイン・アップロード画像)だけ
tar -czf wp-content_backup_$(date +%Y%m%d).tar.gz wp-content/
wp-contentの中身:

フォルダ 内容
themes/ テーマファイル
plugins/ プラグイン
uploads/ アップロードした画像・PDF等

2-3. アップロード画像だけバックアップ

画像ファイルは容量が大きいので、別途バックアップすることもあります。

tar -czf uploads_backup_$(date +%Y%m%d).tar.gz wp-content/uploads/

3. DB + ファイルをセットでバックアップ(実務パターン)

実務では、DBとファイルをセットで取るのが基本です。以下のように1つのスクリプトにまとめておくと便利です。

#!/bin/bash
# WordPress 一括バックアップスクリプト

DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=“./backups”
mkdir -p $BACKUP_DIR

# 1. データベースバックアップ
wp db export $BACKUP_DIR/db_$DATE.sql
echo “DB backup done: db_$DATE.sql”

# 2. ファイルバックアップ(wp-content)
tar -czf $BACKUP_DIR/files_$DATE.tar.gz wp-content/
echo “File backup done: files_$DATE.tar.gz”

echo “=== Backup complete ===”
ls -lh $BACKUP_DIR/*$DATE*


4. Docker環境でのバックアップ

Docker環境では docker exec 経由でWP-CLIを実行します。

4-1. Docker内のDBをエクスポート

docker exec コンテナ名 wp db export /var/www/html/backup.sql –allow-root
注意: Docker環境では --allow-root オプションが必要です。

4-2. Docker内からホストにコピー

# コンテナ内のファイルをホストにコピー
docker cp コンテナ名:/var/www/html/backup.sql ./backup.sql

4-3. Docker環境での一括バックアップ例

DATE=$(date +%Y%m%d)

# DBバックアップ
docker exec コンテナ名 wp db export /var/www/html/backup_$DATE.sql –allow-root
docker cp コンテナ名:/var/www/html/backup_$DATE.sql ./backups/

# ファイルバックアップ(wp-content)
docker cp コンテナ名:/var/www/html/wp-content ./backups/wp-content_$DATE


5. WP-CLIのDB関連コマンド一覧

コマンド 説明
wp db export ファイル名.sql DBをSQLファイルにエクスポート
wp db import ファイル名.sql SQLファイルからDBを復元
wp db optimize DBの最適化(断片化解消)
wp db repair DBの修復
wp db size DB全体のサイズ確認
wp db size --tables テーブルごとのサイズ確認
wp db query "SQL文" 任意のSQLを実行
wp db search "検索文字" DB内のテキスト検索

6. バックアップに関連する便利コマンド

6-1. サイトのURL確認(移行前に控える)

wp option get siteurl
wp option get home

6-2. 全プラグイン・テーマの一覧を保存

# プラグイン一覧をCSVで保存
wp plugin list –format=csv > plugins_list.csv

# テーマ一覧
wp theme list –format=csv > themes_list.csv

6-3. 復元後のURL置換(サーバー移行時)

旧URLを新URLに一括置換できます。まず --dry-run で変更箇所を確認:

wp search-replace ‘https://old-domain.com’ ‘https://new-domain.com’ –dry-run

問題なければ、--dry-run を外して実行:

wp search-replace ‘https://old-domain.com’ ‘https://new-domain.com’

【重要】バックアップの注意点

1. バックアップファイルの保管場所
公開ディレクトリ(ドキュメントルート直下)に置くと、URLでアクセスできてしまいます。
バックアップファイルは公開ディレクトリの外か、.htaccessでアクセス制限をかけること。
2. 定期バックアップの自動化
cronジョブと組み合わせれば、毎日自動バックアップも可能です。
# 毎日深夜3時にDBバックアップ
0 3 * * * cd /var/www/html && wp db export /backup/db_$(date +\%Y\%m\%d).sql
3. プラグインとの使い分け
UpdraftPlus等のバックアッププラグインはGUI操作で便利です。
WP-CLIはSSH接続できる環境向け。管理画面にログインできない障害時にも使える利点があります。

まとめ

やりたいこと コマンド
DB全体バックアップ wp db export backup.sql
DB復元 wp db import backup.sql
ファイルバックアップ tar -czf backup.tar.gz wp-content/
Docker環境でDB docker exec コンテナ名 wp db export backup.sql --allow-root
URL置換(移行時) wp search-replace '旧URL' '新URL'

WP-CLIを使えば、バックアップも復元もコマンド一発。
特に 管理画面が開けないトラブル時 にもSSH経由で操作できるのが最大の強みです。


参考リンク


作成: Seeds Brains(ジェイノーム業務支援AI)