【WordPress】不要なバリエーション画像をローカルで一括削除!バックアップやGit管理を快適に

スポンサーリンク

WordPressサイトのバックアップやバージョン管理を行う際、このように感じたことはありませんか?

  • 「バックアップのためにファイルをダウンロードしたら、自動で生成された大量の画像バリエーションに埋もれてしまい、バックアップ容量が不必要に膨れ上がってしまう…」
  • 「Gitでバージョン管理を始めたいのに、不要な画像までコミットされてリポジトリが肥大化してしまう!」

サーバー上で不要なサイズバリエーション画像を整理するには、「Force Regenerate Thumbnails」をはじめとする便利なプラグインが存在します。
しかし、今回はそれとは目的が異なります。サーバー上のデータには手を加えず、手元のPC(ローカル環境)でWordpress用の画像ファイルを整理したい、という状況に特化した解決策です。

WordPressは、ページの表示速度を最適化するため、アップロードした画像を複数のサイズバリエーションとして自動生成します。
この機能は非常に有用ですが、ローカル環境でファイルのバックアップやバージョン管理を行う際には、これらの派生ファイルがノイズとなりがちです。

特に、WebP変換などを併用している環境では、hoge-150x150.png.webp のような二重拡張子を持つファイルも生成され、大量にある場合、手作業での整理は現実的ではありません。

この記事では、OS標準のコマンドラインツール(Macのターミナル、WindowsのPowerShellなど)を使い、ローカル環境にあるWordPressの画像ファイルから、オリジナル画像だけを残し、自動生成された不要な画像(バリエーション)だけを安全かつ一括で削除する方法を、OS別に詳しく解説します。

この方法なら、サーバーに一切影響を与えることなく、すっきり整理されたバックアップの作成や、クリーンな状態でのGit管理を実現できます。

画像バリエーションの具体例

例えば、photo.jpg という1枚の画像をアップロードすると、uploads フォルダ内には以下のようなファイル群が自動的に生成されることがあります。(デフォルトではこの機能は設定されています。)

  • オリジナル画像
    • photo.jpg
  • 自動生成されるバリエーション(一部)
    • photo-150x150.jpg
    • photo-300x200.jpg
    • photo-768x512.jpg
    • photo-1024x683.jpg
    • これらはWordPressの基本設定や、お使いのテーマ・プラグインにより異なります。
  • WebP変換が有効な場合、さらに追加
    • photo.jpg.webp
    • photo-150x150.jpg.webp
    • photo-300x200.jpg.webp
    • 上記すべての画像に対して、WebP版のファイルが作られます。

このように、1枚の元画像から多数の派生ファイルが作られます。
この記事でご紹介しているコマンドは、ファイル名に -数字x数字 というパターンが含まれる、これらの派生ファイルを主な削除対象とします。

なぜWordPressは画像をたくさん作るのか?

本題に入る前に、WordPressが画像を自動生成する理由を簡単におさらいしましょう。
これは、サイト訪問者への配慮が主な目的です。

  • 表示速度の最適化
    各表示箇所に適した最小サイズの画像を読み込ませ、ページの表示を高速化します。
  • レスポンシブ対応
    PC、スマートフォンなど、異なるデバイスの画面サイズに合わせて最適な画像を表示します。
  • 次世代フォーマット対応
    WebPのような軽量な画像形式を併用し、対応ブラウザでの読み込みをさらに高速化します。

これらの機能はサイトパフォーマンスの向上に不可欠ですが、その結果として生成される多数のファイルが、ローカルでの管理を複雑にしているのです。

【重要】作業前の安全確認

コマンドラインでのファイル操作は非常に強力なため、誤操作はファイルの損失に直結します。
作業を始める前に、必ず以下の点をご確認ください。

  • バックアップの徹底:
    作業対象のフォルダ(uploadsフォルダなど)を必ず別の場所にコピーし、バックアップを作成してください。 これが、安全に作業を進めるための最も重要な保険となります。
  • バリエーション画像を削除しても大丈夫な理由:
    「自動生成された画像を削除してしまって、本当に大丈夫?」と不安に思われるかもしれませんね。
    ご安心ください。
    WordPressの仕組み上、オリジナル画像(最初にアップロードした元ファイル)さえ無事であれば、何も問題ありません。
    バリエーション画像は、あくまでオリジナル画像から作られた「コピー」です。
    もし将来的にサーバー上で特定のサイズの画像が再度必要になったとしても、WordPressはオリジナル画像を基に、いつでも画像を再生成する能力を持っています。
    有名なプラグイン「Force Regenerate Thumbnails」などは、まさにこの仕組みを利用して画像を作り直しています。
    ですから、ローカル環境で整理のためにバリエーション画像を削除することは、サイトの根本的なデータに影響を与える行為ではないのです。どうぞ、ご安心ください。

コマンドラインで画像バリエーションを一括削除する手順

お使いのOSに合わせて、手順をご確認ください。
MacとWindows(Git Bash含む)では、ほぼ同様の find コマンドが利用できます。
Windows標準のPowerShellでは、別のコマンドセットを使用します。

【Mac / Linux / Git for Windows 編】

macOSのターミナル、Linuxのシェル、またはWindowsに Git for Windows をインストールした際に付属する Git Bash を使って操作します。

ステップ1:画像フォルダへの移動

ターミナル(またはGit Bash)を開き、cd コマンドで対象の uploads フォルダへ移動します。

# 例:デスクトップ上のWordPressプロジェクトの場合
cd ~/Desktop/my-wordpress-site/wp-content/uploads

ステップ2:削除対象ファイルの検索と確認

find コマンドと正規表現を使い、削除対象となるファイルのリストをプレビュー表示します。この段階ではファイルは削除されません。

find -E . -type f -regex ".*-?[0-9]+x[0-9]+\.(png|jpg|jpeg|gif|webp)(\.webp|\.jpg|\.jpeg|\.png|\.gif)?$" <strong>-print</strong>

実行後、ターミナルに表示されるファイルリストを精査し、意図しないファイル(特にオリジナル画像)が含まれていないか、慎重に確認してください。

コマンド解説:
-regex-数字x数字 というパターンを含むファイル名を検索し、-print でその結果を表示しています。
-E は拡張正規表現を使用するためのオプションです(環境によっては不要な場合もあります)。

ステップ3:ファイルの一括削除

リストの内容に問題がないことを確認できたら、コマンド末尾の -print-delete に置き換えて実行します。

find -E . -type f -regex ".*-?[0-9]+x[0-9]+\.(png|jpg|jpeg|gif|webp)(\.webp|\.jpg|\.jpeg|\.png|\.gif)?$" <strong>-delete</strong>

このコマンドは、確認なしにファイルを即座に削除します。実行後、再度 -print のコマンドを実行して何も表示されなければ、クリーンアップは成功です。

【Windows PowerShell 編】

Windows 10/11に標準搭載されている PowerShell を使って操作します。

ステップ1:画像フォルダへの移動

スタートメニューで「PowerShell」と検索して起動し、cd コマンドで対象の uploads フォルダへ移動します。

# 例:デスクトップ上のWordPressプロジェクトの場合
cd ~/Desktop/my-wordpress-site/wp-content/uploads

ステップ2:削除対象ファイルの検索と確認

Get-ChildItemWhere-Object を組み合わせ、削除対象のファイルをリストアップします。ここでも、-WhatIf オプションを付けて「もし削除したらどうなるか」をプレビュー表示します。

Get-ChildItem -Recurse -File | Where-Object { $_.Name -match "-\d+x\d+\.(png|jpg|jpeg|gif|webp)(\.webp|\.jpg|\.jpeg|\.png|\.gif)?$" } | Remove-Item <strong>-WhatIf</strong>

実行すると、「WhatIf: 操作 ‘ファイルの削除’ をターゲット ‘…’ に対して実行しています。」のようなメッセージが一覧表示されます。
このリストを精査し、削除対象が正しいことを確認してください。

コマンド解説:
Get-ChildItemでファイルを取得し、Where-Objectで正規表現(-match)に合致するファイル名を持つものだけを絞り込んでいます。
最後に、Remove-Item -WhatIf で削除のプレビューを行っています。

ステップ3:ファイルの一括削除

プレビュー結果に問題がないことを確認できたら、コマンド末尾の -WhatIf を削除して実行します。

Get-ChildItem -Recurse -File | Where-Object { $_.Name -match "-\d+x\d+\.(png|jpg|jpeg|gif|webp)(\.webp|\.jpg|\.jpeg|\.png|\.gif)?$" } | Remove-Item

このコマンドにより、対象ファイルが一括で削除されます。

まとめ

WordPressが自動生成する画像バリエーションは、サイトのパフォーマンス向上に貢献する一方、ローカルでのファイル管理を複雑にします。

今回ご紹介したコマンドラインツールを使う方法は、OSを問わず、これらの不要なファイルを効率的かつ安全に削除する手段です。

  • Mac/Linux/Git Bashユーザーは find コマンドを
  • Windowsユーザーは PowerShell

それぞれ活用することで、クリーンなバックアップの維持や、Gitリポジトリの軽量化が実現できます。

繰り返しになりますが、ファイル操作は常に慎重さが求められます。
作業前のバックアップを忘れずに行い、快適な開発・管理環境を整えましょう。

この記事が、あなたの効率的なWordPress管理の一助となれば幸いです。

コメント

タイトルとURLをコピーしました