批量清理网站垃圾图片释放磁盘存储空间的完整步骤
先搞清楚:哪些图片才是“垃圾”
很多新手一上来就全删了,结果网站图标、商品图全没了。
批量清理网站垃圾图片释放磁盘存储空间之前,先花一分钟划清范围:
- 缩略图缓存:很多CMS(比如WordPress、织梦)会生成多套缩略图,上传一张原图可能产生5-10张小图,占几倍空间。
- 未引用的旧图:文章删除后图片还留在服务器上。
- 重复的备份文件:一些插件或脚本反复备份tar.gz里的图片。
- 临时上传残留:用户上传后没提交的垃圾。
如果用的是宝塔面板,建议先在后台上传目录 /www/wwwroot/你的网站/wp-content/uploads/(或你自己的路径)看一眼文件数,做个心理准备。
操作前必做的三件事
- 全站备份(最重要)——用宝塔面板的一键备份,或者压缩整个网站目录:
tar -czf /tmp/backup_$(date +%Y%m%d).tar.gz /www/wwwroot/你的网站
备份放到其他分区或下载到本地。
- 统计当前磁盘使用率:
df -h
记录Used百分比,清理后对比。
- 选择清理范围:如果只想清缩略图,不要动原始图片;如果空间很紧,可以先把超过半年的旧图打包下载,再删除服务器上的。
三种安全批量清理方法(选一种就行)
方法一:宝塔面板搜索并删除(推荐新手)
进入宝塔面板→文件→进入图片目录(如 wp-content/uploads/2024/)→右上角“搜索”→输入 *.jpg 或 *.png→勾选所有→底部“批量操作”→“删除”。
缺点:无法区分原始图和缩略图,容易误删。
建议先搜索 *-150x150.* 这种带固定尺寸后缀的文件(典型缩略图特征),确认无误再批量删除。
方法二:用 find 命令按大小或时间批量清理
适合熟悉命令行的用户。
以下命令列出所有大于200KB且超过180天未修改的JPEG图片(只预览不下手):
find /www/wwwroot/你的网站/wp-content/uploads -type f -name "*.jpg" -size +200k -mtime +180 -ls
确认列表没问题后,把 -ls 换成 -delete 执行删除:
find /www/wwwroot/你的网站/wp-content/uploads -type f -name "*.jpg" -size +200k -mtime +180 -delete
安全提示:第一次运行务必先用 -ls 看结果,或者用 -exec echo {} \; 打印路径,不要直接加 -delete。
方法三:清理 WordPress 缩略图(专治缓存垃圾)
如果网站基于 WordPress,可以安装插件“Media Cleaner”一键扫描未引用的图片并分批删除。
或者手动运行一条SQL(注意先备份数据库):
DELETE FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata' AND post_id NOT IN (SELECT ID FROM wp_posts);
这条语句删除孤立图片的元数据,配合文件清理更彻底。
避坑:这四类图片千万别碰
- 当前使用的主题、Logo、Favicon——否则网站直接崩或显示异常。
- 商品详情图(电商网站)——删除后购物车页面变叉叉。
- 近期上传的图片(30天内)——可能还在被新文章引用。
- 有
.htaccess或index.html文件的目录下的图片——删之前看清楚,防止误删防盗链配置。
唯一保险做法:先移动到一个临时目录,7天没问题再彻底删除。
验证清理结果 + 高频问题
如何验证磁盘空间是否释放?
执行完清理后运行:
df -h
对比之前的Used数值,至少能释放几百MB到数GB。
也可以用du命令看具体目录大小:
du -sh /www/wwwroot/你的网站/wp-content/uploads
常见问题解答
Q:清理完网站打开变慢?
A:可能是删了图片浏览占用的缓存,等待浏览器重新请求后会恢复正常。或者你用CDN,CDN节点需要刷新。
Q:find命令提示Permission denied怎么办?
A:使用 sudo 前缀,或者切换root用户 sudo -i。
Q:宝塔面板删除了一堆文件后,回收站占用空间很大?
A:宝塔删除默认进回收站,需要手动清空回收站才能真正释放磁盘存储空间。
Q:如何一键清理所有没有被任何文章调用的图片?
A:WordPress可用“Media Cleaner”插件,其他CMS建议先导出数据库,用脚本匹配图片文件名,比较复杂。建议按“最后修改时间+大小”两步走,基本能覆盖90%垃圾。
总结
批量清理网站垃圾图片释放磁盘存储空间是一个日常运维动作,关键在“安全”二字。
先备份、再筛选、最后删除并验证。
按本文的步骤走,即使是零基础也能在10分钟内完成操作,并看到明显效果。
如果你用的面板或CMS不同,先找到图片存放路径,再套用对应方法。
遇到异常情况时,优先恢复备份,再重新按避坑部分检查。