服务器磁盘清理的核心是先定位占用空间的 “大户”,再按 “可安全删除”“可迁移归档” 分类处理,避免误删系统或业务文件。
先明确哪个分区已满,避免在空分区上做无用功。
使用核心命令
df -h,输出结果会显示各分区的总容量、已用、可用空间及挂载点。
- 重点关注 Use% 列,超过 85% 的分区需要优先处理。
- 例如
/dev/vda1 挂载在 /(根目录),若 Use% 达 95%,则需重点清理根目录下的文件。
知道哪个分区满了后,进一步找到具体占用空间的文件 / 目录。
- 查看目录占用:进入目标分区(如
cd /),执行 du -sh *,按大小排序显示所有一级目录的占用情况(-s 汇总,-h 人性化单位)。
- 比如发现
var/ 目录占了 200G,就继续深入 cd var/ 再执行 du -sh *,逐步缩小范围。
- 直接找大文件:执行
find / -type f -size +100M 2>/dev/null,快速定位所有超过 100M 的文件(2>/dev/null 屏蔽权限不足的错误信息)。
- 可根据实际情况调整大小,如
+1G 找超过 1G 的超大文件。
找到占用源后,按以下类别处理,优先删 “无风险、非业务相关” 的文件。
服务器日志(系统日志、应用日志)会持续增长,且大部分旧日志无实时用途。
- 系统日志:路径通常是
/var/log/,如 messages、secure、nginx/access.log 等。
- 清理方法:不要直接
rm 正在写入的日志(会导致应用报错),用 truncate -s 0 日志文件名 清空内容(保留文件句柄)。
- 长期方案:配置 日志轮转(logrotate),让系统自动压缩、删除旧日志(一般系统默认已配置,可检查
/etc/logrotate.conf)。
- 应用日志:如 Java 应用的
logs/、Python 应用的 app.log,按业务需求保留近 1-7 天的日志,旧日志可压缩(gzip 日志文件)或删除。
系统和应用会生成临时文件,大部分重启后可删除,路径通常是 /tmp/ 和 /var/tmp/。
- 清理方法:执行
rm -rf /tmp/*(建议先 ls /tmp/ 确认无重要文件,一般 /tmp/ 下都是临时缓存)。
- 注意:部分应用可能在
/tmp/ 存运行时文件,若清理后应用报错,重启应用即可。
服务器可能留存数据库备份(如 mysql_backup_202401.sql)、配置备份等,这类文件可迁移到外部存储(如 NAS、云存储),释放本地磁盘。
- 处理方法:用
scp 或 rsync 将备份文件传到外部设备,再删除本地文件(删除前务必确认外部已保存成功)。
包管理工具(yum、apt)会缓存安装包,长期不清理会占用空间。
- CentOS/RHEL:执行
yum clean all 清理所有 yum 缓存。
- Ubuntu/Debian:执行
apt clean 清理已下载的安装包(.deb 文件)。
- 此外,可删除未使用的软件包:
yum remove 无用软件名 或 apt purge 无用软件名(如旧版本的 JDK、不再使用的服务)。
- 清理前备份:对不确定的文件(如业务相关的配置、数据文件),先备份到其他存储,再操作。
- 不碰系统核心文件:严禁删除
/bin/、/sbin/、/lib/、/etc/ 下的系统文件,误删会导致服务器无法启动。
- 避开业务高峰期:清理大文件(如几十 G 的日志)时,可能占用 IO,建议在业务低峰期(如凌晨)操作。
- 检查文件是否被占用:用
lsof 文件名 查看文件是否被进程占用,若显示有进程,先停止进程再清理(或用 truncate 清空)。
占用磁盘较大的一般都是日志文件、备份文件,可以关闭网站日志,设置合理的备份文件数量。
最后磁盘扩容,理论上带有数据的磁盘,我们不建议大家扩容,如果您懂技术,可以联系我们付费升级磁盘容量,按照我们的教程自行扩容磁盘容量,不懂的最好别扩容,直接换机器就行。