帮助中心 >
  关于云服务器 >
  香港VPS服务器磁盘满了怎么清理?日志/备份文件定位与清理教程!
香港VPS服务器磁盘满了怎么清理?日志/备份文件定位与清理教程!
时间 : 2026-09-22 15:59:48
编辑 : Jtti

  香港VPS用着用着突然网站打不开、数据库连不上、SSH敲命令都报错,登录一看——磁盘满了。这种情况在香港VPS上特别常见,因为很多套餐给的系统盘不大,20GB到40GB是常态,而香港机房带宽贵、硬件贵,商家在磁盘上抠成本是普遍做法。

  磁盘满了之后,系统会连锁反应:MySQL无法写入临时文件直接崩溃、PHP-FPM写不了session、Nginx日志写不进去、甚至SSH登录都可能失败。关键是要快速定位到“谁把磁盘吃满了”,然后安全地清理掉。

  第一步:确认磁盘使用情况

  登录服务器后,先看整体情况:

df -h

  输出会列出每个挂载点的使用率。重点关注根分区//var分区,如果Use%超过90%,就要开始处理了。

  如果df -h显示某个分区满了,但你又不知道具体是哪个目录占的,用du逐层排查:

du -sh /* 2>/dev/null | sort -rh | head -20

  这条命令会列出根目录下每个文件夹的总大小,按从大到小排序。2>/dev/null是把权限错误屏蔽掉,避免输出太乱。

  找到最大的那个目录后,继续往下钻:

du -sh /var/* 2>/dev/null | sort -rh | head -20

  一层一层往下,很快就能定位到“元凶”。

  第二步:日志文件——最常见的磁盘杀手

  日志文件是香港VPS磁盘被占满的头号原因。Nginx、MySQL、PHP、系统日志,每天悄无声息地写,几天不看就能吃掉几个GB。

  Nginx日志

du -sh /var/log/nginx/
ls -lh /var/log/nginx/

  Nginx的access.logerror.log是重灾区。如果网站访问量大,access.log一天长到几百MB很正常。

  清理方法:

  不要直接rm删掉日志文件——Nginx还在往里面写,删了之后文件句柄还占着空间,df看还是满的。正确的做法是清空内容:

# 清空当前日志
> /var/log/nginx/access.log
> /var/log/nginx/error.log

  更规范的做法是配置日志轮转。编辑/etc/logrotate.d/nginx,确保有类似这样的配置:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        [ -f /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
    endscript
}

  rotate 7表示保留最近7天的日志,超过的自动删除。compress启用压缩,能省不少空间。

  MySQL日志

du -sh /var/log/mysql/
ls -lh /var/log/mysql/

  MySQL的error.log、slow.log、general.log都可能很大。特别是开启了慢查询日志但没配置轮转的,slow.log能长到几个GB。

  清理方法:

> /var/log/mysql/slow.log
> /var/log/mysql/error.log

  更重要的操作:检查MySQL的binlog。binlog是二进制日志,用于主从复制和数据恢复,默认会保留很久。在香港VPS这种小磁盘上,binlog经常是隐藏的“空间黑洞”。

du -sh /var/lib/mysql/
ls -lh /var/lib/mysql/ | grep bin

  清理binlog需要登录MySQL执行:

-- 查看当前binlog
SHOW BINARY LOGS;

-- 删除指定日期之前的binlog
PURGE BINARY LOGS BEFORE '2026-09-01 00:00:00';

-- 或者只保留最近3天的
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);

  如果不需要主从复制,可以在my.cnf里关闭binlog(注释掉log-bin那行),重启MySQL。但关闭前确认没有从库依赖。

  系统日志

du -sh /var/log/
journalctl --disk-usage

  journalctl --disk-usage会显示systemd日志占了多少空间。清理方法:

# 只保留最近3天的日志
journalctl --vacuum-time=3d

# 或者限制总大小为500MB
journalctl --vacuum-size=500M

  PHP日志

du -sh /var/log/php*
ls -lh /var/log/php*/

  PHP-FPM的慢日志和错误日志也可能占空间,清理方式同样是清空内容而不是删除文件。

  第三步:备份文件——第二号空间杀手

  很多站长在服务器上做了自动备份,备份文件存在本地磁盘。时间一长,备份文件就把磁盘塞满了。

  常见备份文件位置

# 网站目录下的备份
find /var/www -name "*.sql" -o -name "*.tar.gz" -o -name "*.zip" 2>/dev/null | head -20

# 宝塔面板的备份目录(如果用了宝塔)
du -sh /www/backup/

# 常见的自定义备份目录
du -sh /backup/ /home/backup/ 2>/dev/null

  清理策略

  先确认备份的完整性。不要一上来就删,先确认最新的备份是好的,再清理旧的:

# 查看备份文件列表,按时间排序
ls -lht /www/backup/ | head -20

  保留最近3-7天的备份,删除更早的:

# 删除7天前的备份文件
find /www/backup/ -type f -mtime +7 -delete

  长期方案:把备份传到远程对象存储,不要在本地磁盘保留备份。本地备份和服务器在同一块磁盘上,服务器磁盘挂了,备份跟着一起完蛋。

  第四步:其他常见占用源

  缓存和临时文件

du -sh /tmp/ /var/tmp/ /var/cache/

  /tmp目录下可能堆积了大量临时文件,清理:

rm -rf /tmp/*

  注意:不要删/tmp目录本身,只删里面的内容。

  Docker占用

  如果服务器上跑了Docker:

docker system df

  查看镜像、容器、数据卷占用的空间。清理:

# 清理未使用的镜像、容器、网络
docker system prune -a

# 清理未使用的数据卷(注意:这会删除未被容器使用的卷)
docker volume prune

  网站上传目录

  如果是WordPress或其他CMS,检查上传目录:

du -sh /var/www/你的网站/wp-content/uploads/

  有些网站因为用户上传了大量图片或附件,uploads目录能占几十GB。这个目录不能直接删,但可以考虑把上传文件迁移到对象存储,或者接入CDN,减少本地磁盘占用。

  邮件队列

  如果服务器上跑了邮件服务:

mailq
du -sh /var/spool/mail/ /var/mail/

  邮件队列堆积时,可以清空:

postsuper -d ALL

  第五步:清理后的验证

  清理完成后,确认磁盘空间已经释放:

df -h

  如果空间确实释放了,再检查一遍关键服务是否正常:

systemctl status nginx
systemctl status mysql
systemctl status php-fpm

  注意:如果清理日志文件时用的是rm而不是> filedf可能显示空间没释放(因为文件句柄还在被进程占用)。解决方法是重启占用文件的进程,或者用lsof | grep deleted找到被删除但仍被占用的文件,然后重启对应服务。

  预防措施:别让磁盘再满

  配置日志轮转。Nginx、MySQL、PHP的日志都配上logrotate,设置保留天数和压缩。

  备份不存本地。备份文件直接传到远程对象存储,本地只保留最近1-2天的。

  监控磁盘使用率。写个简单的监控脚本,磁盘超过80%时发邮件告警:

#!/bin/bash
THRESHOLD=80
CURRENT=$(df / | grep / | awk '{print $5}' | sed 's/%//')
if [ $CURRENT -gt $THRESHOLD ]; then
    echo "磁盘使用率 ${CURRENT}%,超过阈值" | mail -s "磁盘告警" admin@你的邮箱.com
fi

  加到cron里每天跑一次。

  定期清理。养成习惯,每周登录服务器跑一次df -hdu -sh /*,提前发现苗头。

  香港VPS的磁盘空间普遍不大,磁盘满了之后系统会连锁崩溃。排查流程很清晰:df看整体 → du逐层定位 → 清理日志/备份/缓存 → 验证空间释放 → 配置轮转和监控防止复发。最关键的是不要盲目删文件,尤其不要用rm删正在被写入的日志文件——清空内容才是正确做法。

售前客服
JTTI-Ellis
JTTI-Eom
JTTI-Benoit
JTTI-Coco
JTTI-Luca
JTTI-Amano
JTTI-Selina
JTTI-Defl
技术支持
JTTI-Noc
标题
电子邮件地址
类型
销售问题
销售问题
系统问题
售后问题
投诉与建议
市场合作
信息
验证码
提交