批量清理网站垃圾图片释放磁盘空间
网站跑着跑着磁盘就红了,登录面板一看,多半是被上传的图片、旧缩略图和备份截图塞满了。
手动一张张删不现实,直接用 rm 又怕删错。
这篇文章会告诉你如何安全、批量地清理网站中的垃圾图片,立竿见虎地释放磁盘空间。
动手前先摸清敌情:哪些图片能删
别急着执行命令,先登录服务器或面板,确认以下三点:
- 磁盘占用情况。执行
df -h查看哪个分区已用比例高,通常/或/www是网站目录所在。 - 大图集中在哪。用
du -sh /www/wwwroot/*/wp-content/uploads/这种命令按项目查,或者直接在宝塔「文件」里看目录大小。 - 判断哪些可以删。以下几类图片基本是安全的清理对象:
- 从未被引用过的旧上传(比如几年前的文章已删除但图片还在);
- 主题或插件生成的缩略图(名称通常带
-150x150、-300x200等尺寸后缀); - 重复的备份截图、无效的日志截图;
- 超过一定天数未访问的临时缓存图片。
如果你用 WordPress,还可以用插件扫描未使用的媒体文件,但为了通用性,这里讲纯命令和面板法。
批量清理:一屏命令搞定海量垃圾图
方法一:按时间清理(适用于旧图片堆积)
例如删除 /www/wwwroot/example.com/wp-content/uploads/ 目录下 180天前 的所有图片:
find /www/wwwroot/example.com/wp-content/uploads/ -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.webp" \) -mtime +180 -delete
参数说明:
-type f只找文件;\( ... \)组合多个扩展名条件;-mtime +180表示修改时间超过 180 天;-delete直接删除。强烈建议先去掉-delete跑一遍预览,确认结果没问题再加-delete。
方法二:按尺寸清理(适用于超大图)
有些站长允许上传几 MB 的图片,访问量一上来磁盘就崩。
删除大于 1MB 的图片:
find /www/wwwroot/example.com/ -type f \( -name "*.jpg" -o -name "*.png" \) -size +1M -delete
同样先预览:find ... -size +1M -exec ls -lh {} \; 看看都有哪些。
方法三:批量删除带尺寸后缀的缩略图(安全高效)
WordPress 等程序会自动生成 -150x150.jpg、-300x200.jpg 等副本,原始图还在的话,这些副本可以放心删。
执行:
find /www/wwwroot/example.com/wp-content/uploads/ -type f -name "*-[0-9]*x[0-9]*.jpg" -o -name "*-[0-9]*x[0-9]*.png" | xargs rm -f
面板用户操作路径:宝塔批量删除
如果你用宝塔 Linux 面板:
- 登录面板,左侧点「文件」。
- 导航到
www/wwwroot/你的站点/wp-content/uploads/等目录。 - 右上角搜索框输入
*.jpg或*.png,勾选显示结果后点击「批量操作」→「删除」。 - 如果要按时间筛选,可以先用查找功能(顶部「搜索」)设置文件修改时间范围,再批量操作。
宝塔本身不提供按尺寸或按时间过滤的批量删除,建议用 find 命令更灵活。
清完千万别忘的两件事
1. 检查网站是否正常
重点刷新文章详情页、缩略图列表、首页。
如果发现图片裂了,说明误删了原始图,赶紧从回收站恢复(宝塔自带回收站,find 命令也可以先移到 /tmp/ 而不是直接删)。
2. 验证磁盘占用
执行 df -h 再次查看,或宝塔面板首页看磁盘图表。
如果释放空间不理想,可能是日志、数据库或备份文件更大,需要另外处理。
高频问题解答
Q:删了图片但磁盘空间没变少?
A:可能是有进程还在占用已删除的文件(比如 Nginx 缓存了旧图片)。执行 lsof +L1 找出未释放的文件句柄,然后重启 Nginx 或 PHP-FPM:systemctl restart nginx php-fpm。
Q:能不能只删未引用的图片?
A:纯命令法不能智能判断引用关系。建议先用 grep 配合文章数据库导出检查,或者用 WordPress 插件如「Media Cleaner」扫描。本文的方法适合清理明显无用的旧图或缩略图。
Q:删完后变成 404 怎么办?
A:如果只是缩略图变 404,原始图还在,可以删掉缩略图后重新生成(用 Regenerate Thumbnails 插件)。如果原始图没了,从备份恢复或重新上传。
写在最后
批量清理图片是释放磁盘空间最快的手段之一,但务必先预览再执行。
养成定期检查 wp-content/uploads 的习惯,设置上传限制(如限制最大文件尺寸)可以从源头减缓占用。
如果你也在处理服务器磁盘告警,按本文步骤走一遍,几分钟就能看到明显效果。