如何获取所有孤立图像文件的列表?


8

我想创建不再在任何内容项中使用的图像列表,以便可以从磁盘上清除它们。生成此类列表的最佳方法是什么?

Answers:


5

我不确定如何执行此操作的最佳方法。我能想到的唯一方法需要一些努力。也就是说,生成数据库内容表中所有图像的列表(并可能在模块,菜单,横幅等中。在很多引用图像的地方),将该列表与所有图像进行比较在文件系统上,然后在每个列表之间进行比较,并删除未使用的图像。

所以这看起来像:

1)获取com_content的数据库表中所有图像的列表。转储所有行,正则表达式为<img src="images/stories/an-image.jpg" />。另一种方法是使用php的strip_tags()方法,仅允许标记。我发现这比一般编写正则表达式容易。基本上运行php脚本以文本文件或csv的形式为您构建此列表。

2)获取站点上所有图像的列表。我相信您可以从命令行使用grep来执行此操作。您可能还可以使用某种递归php文件系统方法来执行此操作。

3)将两者都放入电子表格,并对每列进行某种比较,以查看是否使用了图像,然后在第三列中编译未使用图像的列表。

-

就个人而言,除非您有大量图像,否则我不确定这样做是否值得。但是您必须确定未决的用例。也可能会有其他人必须提出的更简单的解决方案!


3

我不知道会做的现有扩展。最好的选择是编写一个脚本,根据数据库中的表检查每个图像,在该表中可以存储内容以查看它们是否正在使用。


3

如果您有访问日志,则可以在最近的X个月中提取所有请求的图像文件(您将需要处理所有这些数据)。因此,这些很可能已在您的实际网站中使用(但还不是100%)。根据您的内容和站点结构,以及您的站点是否不是真正的庞大(即一百万篇文章),很可能其余部分可能未被使用(再次不是100%)。

我发现此解决方案很简单。在删除之前备份图像。您可以稍后跟踪尝试打开特定文件的404错误,然后可以决定恢复这些错误。

这是肮脏的解决方案,但实际上没有简单的方法。最好的选择是遵循乍得的建议并编写自己的解析器。


好主意,谢谢。在我的虚拟主机提供商处,我们的客户无法访问访问日志,但是对于其他读者来说,此答案仍然很有效。
miroxlav

0

虽然在提出问题时没有扩展名,但截至2018年8月,至少有几个扩展名可以明显地查找和删除孤立的图像:

VX orphanImages(付费扩展)

“ VX orphanImages插件会扫描您的Joomla!网站图像文件夹,以查找网站上任何内容均未使用的项目。它使用核心Media组件在列表中标记了孤立图像,因此您可以决定保留还是删除它们。 ”

ImageManager(免费/付费版本)

“ ImageManager for Joomla!允许您移动和重命名图像,而不会丢失文章和自定义HTML模块中的图像链接。只需拖放图像即可重组和清理网站。它还可以列出所有未使用的图像并删除它们”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.