All-in-One WP Migration で作ったバックアップファイル(.wpress)を、サーバー上に置いたままにしていないでしょうか。ファイル名さえ分かれば、誰でも URL から直接ダウンロードできてしまう状態になっていることがあります。
そこで Webの相談所では、サーバー上の .wpress を探し出して「どのサイトに・何件・どれくらいの容量」残っているかを一覧にするシェルスクリプト check-wpress.sh を作成し、GitHub で公開しました。この記事では、何が危ないのかと、スクリプトの使い方をご紹介します。
.wpress は「サイト丸ごと」のバックアップ
.wpress は、All-in-One WP Migration がエクスポートやバックアップのときに作るファイルです。サーバー上では wp-content/ai1wm-backups/ に保存され、ファイル名は「ドメイン名-年月日-時刻-ランダムな文字列」の形で自動的に付けられます(例:example-com-20260813-122112-k3x9q2m7v4wd.wpress)。
中にはテーマ・プラグイン・アップロード画像に加えて、データベースのダンプがまとめて入っています。つまり次のような情報が、ひとつのファイルに詰まっています。
- 管理者を含むユーザー情報(メールアドレス、パスワードのハッシュ)
- お問い合わせフォームの送信履歴や会員情報など、利用者の個人情報
- プラグインの設定値や API キーなど、サイトの内部情報
サイトの引っ越しや一時的な退避には便利ですが、作ったまま放置されやすいファイルでもあります。
.htaccess は「一覧表示」を止めるだけ
ai1wm-backups フォルダには、プラグインが .htaccess と index.php を自動で置いてくれます。これで「守られている」と思われがちですが、止めているのはディレクトリの一覧表示だけです。
フォルダの中身を一覧で見られなくても、ファイル名が分かれば次のような URL を直接開くことでダウンロードできてしまいます。
https://example.com/wp-content/ai1wm-backups/example-com-20260813-122112-k3x9q2m7v4wd.wpress
ファイル名の末尾にはランダムな文字列が付くため、当てずっぽうで URL を探り当てるのは簡単ではありません。ただし、ドメイン名と日時の部分は推測でき、守りになっているのはランダムな部分だけです。作業メモやチャット、メールに貼ったリンク、検索エンジンのキャッシュなどから URL そのものが漏れることもあります。「見えないから大丈夫」ではなく、不要なものはサーバーに置かないのが一番確実な対策です。
check-wpress.sh でできること
check-wpress.sh は、指定したディレクトリ以下の .wpress を探して、サイトごとに棚卸しするスクリプトです。これまで公開してきたログ調査スクリプトと同じく、wp-security-audit-on-jp-hosting リポジトリに追加しました(コミット)。
- 既定は読み取り専用:何も消さずに、一覧と集計だけを表示します
- サイト単位でまとめる:.wpress が置かれた WordPress を特定し、サイトごとに件数・合計サイズ・最終更新日時を表示します
- 公開 URL を併記:WP-CLI が使える環境では、サイトの URL を取得して各ファイルのダウンロード URL を表示します。「この URL で落とせてしまう」ことが具体的に分かります
- ドメイン別の集計:件数の多い順に並べ、最後に合計件数と容量を表示します
- 確認付きの削除:
--deleteを付けたときだけ、削除リストを出してyesの入力を確認してから削除します
複数サイトを1つのアカウントで運用しているレンタルサーバーでも、ホームディレクトリを指定すれば全サイトをまとめて確認できます。WordPress のルートは wp-load.php を目印に判定しているので、wp-config.php を1つ上の階層に置いている構成でも正しく見分けられます。
使い方
SSH でサーバーにログインし、調べたいディレクトリを引数に指定して実行します。ダウンロードせずに curl から直接実行することもできます。
1. まずは一覧・集計だけ(読み取り専用)
# リポジトリから取得して実行する場合
./check-wpress.sh /home/example
# curl で直接実行する場合
curl -s https://raw.githubusercontent.com/web-soudan/wp-security-audit-on-jp-hosting/main/check-wpress.sh | bash -s -- /home/example実行すると、次のような形で結果が表示されます(表示例)。
対象: All-in-One WP Migration のバックアップ (.wpress)
走査対象: /home/example
--------------------------------------------------
サイト: https://example.com
WP : /home/example/www/example.com
1.2GB 2026-08-13 12:21 /home/example/www/example.com/wp-content/ai1wm-backups/example-com-20260813-122112-k3x9q2m7v4wd.wpress
└ URL: https://example.com/wp-content/ai1wm-backups/example-com-20260813-122112-k3x9q2m7v4wd.wpress
小計: 1 件 / 1.2GB
--------------------------------------------------
ドメイン別の .wpress
1 件 1.2GB https://example.com
合計: 1 件 / 1.2GB「└ URL:」の行が、ファイル名さえ分かればダウンロードできてしまう URL です。WP-CLI がない環境では URL の代わりに WordPress のパスが表示されます。
2. 不要なものを削除する
./check-wpress.sh /home/example --delete削除リストが表示され、yes と入力したときだけ削除します。それ以外の入力では何も消さずに終了します。
cron などの非対話環境で削除したい場合は --yes も付けてください。--delete だけを非対話で実行した場合は、誤って消さないようエラーで止まる作りにしています。
| オプション | 内容 |
|---|---|
| (なし) | 一覧と集計のみ。何も変更しません |
--delete | 一覧を表示したうえで、確認して .wpress を削除 |
--yes / -y | --delete の確認を省略(非対話実行用) |
-h / --help | 使い方を表示 |
削除するときの注意点
削除したファイルは元に戻せません。必要なバックアップは、先に手元にダウンロードしてから削除してください。
スクリプト側でも、消しすぎないように次の配慮をしています。
- 削除するのは
.wpressファイルだけです。ai1wm-backups内の.htaccessやindex.phpはプラグインの動作に必要なため残します - シンボリックリンクはスキップし、実体のファイルだけを対象にします
- 権限不足などで消せなかったファイルは、警告として件数とパスを表示します
また、削除しても運用が変わらなければ、また同じ場所にバックアップが溜まっていきます。あわせて次の点も見直すことをおすすめします。
- 移行作業が終わったら、その場で .wpress を削除する手順にする
- 定期バックアップは、サーバーの公開ディレクトリ以外(外部ストレージなど)に保存する仕組みにする
- 使わなくなった All-in-One WP Migration は停止・削除する
- このスクリプトを定期的に実行して、残っていないかを確認する
まとめ
.wpress はサイトの中身と個人情報をまるごと含むファイルで、.htaccess があってもファイル名が分かればダウンロードできてしまいます。移行やバックアップで一度でも All-in-One WP Migration を使ったことがあるサイトは、ぜひ check-wpress.sh で残っていないか確認してみてください。既定では何も消さないので、まずは気軽に一覧を出すところから始められます。
スクリプトは GitHub で公開しています。不具合や改善のご提案は Issue や Pull Request でお寄せください。
「SSH の使い方が分からない」「どれを消してよいか判断できない」「バックアップの運用ごと見直したい」といった場合は、Webの相談所までお気軽にご相談ください。WordPress の保守・セキュリティ対策の一環としてお手伝いします。

