宝塔服务器回收站默认硬链接保留文件,长期不清理会导致磁盘静默占满;需通过Shell脚本或Python接口定时清空,并调整recycle_time.pl配置保留天数。

回收站不清理,磁盘迟早爆满,且面板不会主动提醒你——/www/Recycle_bin 目录长期静默吃空间,是宝塔服务器最隐蔽的磁盘杀手。
回收站为什么越用越卡?
宝塔回收站不是“删除后移入”,而是硬链接保留原始文件块,/www/Recycle_bin 下的文件仍占真实磁盘空间。它不显示在面板首页的磁盘使用率图表里,但 df -h 一看就暴露:/www 分区持续上涨,Nginx 日志写不进、MySQL 报错“No space left on device”,根源常在这里。
常见错误现象:
- 面板响应变慢,点击“文件”卡顿数秒
- 网站突然 502,查日志发现磁盘满(
df -h /www显示 100%) - 手动清空回收站后,
du -sh /www/Recycle_bin仍显示几十GB,说明之前删过整站或大备份包
用 Shell 脚本定时清空回收站(推荐)
直接在计划任务里写 rm -rf /www/Recycle_bin/* 看似简单,但没日志、不可追溯、出错难排查。封装成脚本更可控。
实操步骤:
- SSH 登录后创建脚本:
vi /www/server/panel/script/clean_recycle.sh - 写入内容(保留目录结构,只清内容):
#!/bin/bash echo "$(date): start cleaning Recycle_bin" >> /www/server/panel/logs/clean_recycle.log rm -rf /www/Recycle_bin/site/* /www/Recycle_bin/database/* /www/Recycle_bin/ftp/* /www/Recycle_bin/ssl/* echo "$(date): done" >> /www/server/panel/logs/clean_recycle.log
- 赋权:
chmod +x /www/server/panel/script/clean_recycle.sh - 宝塔【计划任务】→ 添加 → 类型选“Shell脚本”,周期设为
0 2 * * 0(每周日凌晨2点),脚本内容填:/www/server/panel/script/clean_recycle.sh
注意:/www/Recycle_bin 和 /www/wwwrecycle 是两套机制——前者是旧版回收站路径(仍被大量用户沿用),后者是新版,脚本里要按你实际存在的路径写。不确定时先 ls -ld /www/Recycle_bin /www/wwwrecycle 确认。
用 Python 接口调用清空(最安全)
该方式等同于你在面板上点【清空回收站】按钮,会触发宝塔内置校验、记录操作日志(/www/server/panel/logs/recycle_bin.log),且跳过正在被引用的文件,避免误删风险。
脚本内容直接填:
python /www/server/panel/class/recycle_bin.py empty
适用场景:
- 生产环境不敢轻易
rm -rf,要留审计痕迹 - 回收站里混有未完全释放的数据库备份文件(如 .sql.gz 正在被 mysqldump 写入)
- 需要和面板前端行为严格一致,比如某些插件依赖回收站状态回调
注意:该命令在宝塔 8.x 及以上版本有效;若报 ModuleNotFoundError,说明路径已变更,先 find /www/server/panel -name "recycle_bin.py" 确认真实路径。
别忽略回收站保留天数配置
即使开了自动清理,回收站默认保留 30 天,意味着刚删的文件还会占着空间近一个月。对小硬盘(如 40GB 云服务器)非常危险。
修改方法:
- 编辑配置文件:
vi /www/server/panel/data/recycle_time.pl - 把数字改成
7或3(单位:天),保存退出 - 无需重启,下次新增回收站条目即生效
关键点:这个配置只影响「新删入」的文件保留时长,已存在的文件不会被提前清理,所以必须配合定时任务一起用。另外,/www/Recycle_bin 没对应配置项,它的清理完全依赖你写的脚本或 Python 调用。











