すべての孤立した画像ファイルのリストを取得するにはどうすればよいですか?


8

コンテンツアイテムで使用されなくなったイメージのリストを作成して、ディスクから削除できるようにしたいと考えています。そのようなリストを生成するための最良の方法は何ですか?

回答:


5

これを行うための最良の方法があるかどうかはわかりません。私が考えることができる唯一の方法は少し努力が必要です。つまり、データベースのコンテンツテーブル(およびモジュール、メニュー、バナーなど)のすべての画像のリストを生成し、そのリストをすべての画像と比較します。ファイルシステムで、各リストを比較して、使用されていないイメージを削除します。

したがって、これは次のようになります。

1)com_contentのデータベーステーブル内のすべての画像のリストを取得します。すべての行をダンプし<img src="images/stories/an-image.jpg" />ます。正規表現はです。別の方法は、phpのstrip_tags()メソッドを使用して、タグのみを許可することです。これは、一般的に正規表現を書くより簡単です。基本的にphpスクリプトを実行して、このリストをテキストドキュメントまたはcsvとして作成します。

2)サイト上のすべての画像のリストを取得します。コマンドラインからgrepを使用してこれを実行できます。おそらく、ある種の再帰的なphpファイルシステムメソッドでも同じことができます。

3)両方をスプレッドシートに入れ、各列に対して何らかの比較を実行して画像が使用されているかどうかを確認し、3番目の列で未使用の画像のリストをコンパイルします。

-

個人的には、あなたががらくたの画像を持っていない限り、私はこれが努力の価値があると確信していません。ただし、ユースケースが保留中であることを確認する必要があります。また、他の誰かが提案しなければならないはるかに簡単な解決策があるかもしれません!


3

私はそれを行う既存の拡張機能を知りません。最善の策は、コンテンツを格納できるデータベース内のテーブルに対して各画像をチェックして、それらが使用されているかどうかを確認するスクリプトを作成することです。


3

アクセスログがあれば、過去Xか月間にリクエストされたすべての画像ファイルを引き出すことができる場合があります(このすべてのデータで遊ぶ必要があります)。したがって、これらは実際のサイトで使用されている可能性が非常に高い(まだ100%ではない)。コンテンツとサイトの構造に応じて、またサイトがそれほど大きくない場合(つまり、100万の記事)、残りはおそらく使用されていない可能性があります(これも100%ではありません)。

この解決策は簡単だと思います。削除する前にイメージをバックアップします。特定のファイルを開こうとする404エラーを後で追跡でき、これらを復元することができます。

それは汚い解決策ですが、本当に簡単な方法はありません。最良のオプションは、チャドのアドバイスに従い、独自のパーサーを作成することです。


いい考え、ありがとう。私のWebホスティングプロバイダーでは、私たちの顧客はアクセスログにアクセスできませんが、この回答は他の読者にとってはまだ重いかもしれません。
miroxlav 2014年

0

質問時に拡張機能は存在しませんでしたが、2018年8月現在、孤立したイメージを見つけて削除できる拡張機能が少なくともいくつかあります。

VX orphanImages(有料拡張機能)

「VX orphanImagesプラグインは、Joomla!サイトの画像フォルダーをスキャンして、サイトのコンテンツで使用されていないアイテムを見つけます。コアメディアコンポーネントを使用して、リスト内の孤立した画像にマークを付けるため、それらを保持するか削除するかを決定できます。 」

ImageManager(無料/有料バージョン)

「ImageManager for Joomla!を使用すると、記事やカスタムHTMLモジュールの画像リンクを失うことなく、画像を移動したり名前を変更したりできます。画像をドラッグアンドドロップするだけで、ウェブサイトを再構築してクリーンアップできます。また、未使用の画像をすべて一覧表示して削除することもできます。 」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.