如何通过命令行深度清理磁盘?
美国、香港服务器
如何通过命令行深度清理磁盘?
09-10 来源:
通过命令行深度清理磁盘需要精准定位大文件、冗余数据和系统垃圾,同时避免误删关键文件。以下是适用于 Linux 系统(以 Ubuntu 24.04 为例)的深度清理方案,按「安全性从高到低」排序,兼顾彻底性和风险控制:
一、安全基础清理(无风险,优先执行)
这些操作针对系统自动生成的冗余文件,清理后不影响系统运行。
1. 清理 APT 包管理缓存
系统会缓存下载的安装包(.deb文件),安装后可安全删除:
bash
# 清理所有缓存的安装包(彻底释放空间)
sudo apt clean
# 清理不再需要的依赖包(软件卸载后残留的依赖)
sudo apt autoremove -y # -y 自动确认删除
# 清理部分残留配置文件(谨慎,仅删除确定无用的)
sudo apt purge $(dpkg -l | grep "^rc" | awk "{print $2}")
dpkg -l | grep "^rc" 列出已卸载但残留配置文件的软件,purge 会彻底删除这些配置。
2. 清理系统日志文件
/var/log 目录存储系统和服务日志,旧日志可安全删除:
bash
# 查看日志目录占用
sudo du -sh /var/log/*
# 删除30天前的.log文件(保留近期日志用于排查问题)
sudo find /var/log -type f -name "*.log" -mtime +30 -delete
# 删除压缩的旧日志(如.log.1.gz、.log.2.bz2等)
sudo find /var/log -type f -name "*.log.*" -delete
# 清理journalctl日志(系统日志服务,可保留2周内的)
sudo journalctl --vacuum-time=2weeks
3. 清理临时文件
系统临时目录 /tmp 和用户缓存目录会积累临时文件,重启后自动清空,手动清理无风险:
bash
# 清理/tmp目录(当前未被使用的临时文件)
sudo rm -rf /tmp/*
# 清理用户缓存(如浏览器缓存、软件临时文件)
rm -rf ~/.cache/* # ~ 表示当前用户目录,非root用户无需sudo
二、深度分析与清理大文件 / 目录(需判断风险)
通过命令定位占用空间最大的文件和目录,针对性清理(重点关注非系统目录,如 /www、/home 等)。
1. 定位大目录(找出空间占用源头)
bash
# 查看根分区下各目录占用(按大小排序,单位GB/MB)
sudo du -h --max-depth=1 / | sort -hr
# 深入分析占用最高的目录(例如/www)
sudo du -h --max-depth=1 /www | sort -hr
# 定位单个大文件(查找1GB以上的文件)
sudo find / -type f -size +1G -exec du -h {} \; # / 表示全系统搜索,耗时较长
2. 清理常见大文件来源
根据上一步的结果,针对性处理以下场景:
网站 / 应用冗余文件(如 /www 目录):
bash
# 删除网站旧备份(假设备份在/www/backup,保留3个月内的)
sudo find /www/backup -type f -mtime +90 -delete
# 清理网站上传目录的无用大文件(如过期视频、测试文件)
# 先确认文件路径:sudo du -h /www/wwwroot/xxx.com/uploads/*
sudo rm -rf /www/wwwroot/xxx.com/uploads/old_videos/ # 替换为实际路径
数据库日志与临时文件:
bash
# MySQL/MariaDB的慢查询日志(若过大)
sudo rm -f /var/log/mysql/mysql-slow.log # 删除后需重启MySQL:sudo systemctl restart mysql
# PostgreSQL的WAL日志(若未自动清理)
sudo pg_archivecleanup /var/lib/postgresql/16/main/pg_wal/ # 替换为实际版本路径
Docker 冗余(若使用 Docker):
bash
# 清理停止的容器、无用镜像、缓存数据(谨慎,会删除未使用的资源)
sudo docker system prune -a -f # -a 包括未使用的镜像,-f 强制执行
# 清理Docker卷(未关联容器的卷)
sudo docker volume prune -f
用户上传的大文件(如 /home 目录):
bash
# 查找用户目录下100MB以上的文件
sudo find /home -type f -size +100M -exec du -h {} \;
# 确认无用后删除:sudo rm -f /home/user/large_file.iso
三、高级清理(谨慎操作,针对特殊场景)
以下操作针对特定系统组件,误删可能影响服务,需明确用途后执行。
1. 清理 PHP 会话文件
PHP 会话文件(默认存于 /var/lib/php/sessions)若长期不清理,会占用大量 inode(而非磁盘空间):
bash
# 查看会话文件数量
ls -l /var/lib/php/sessions | wc -l
# 删除24小时前的会话文件(不影响当前登录用户)
sudo find /var/lib/php/sessions -type f -mtime +1 -delete
2. 清理邮件队列(若未配置邮件服务)
未使用邮件服务时,/var/spool/mail 和 /var/spool/postfix 可能积累垃圾邮件:
bash
# 清理用户邮件
sudo rm -rf /var/spool/mail/*
# 清理Postfix邮件队列
sudo postsuper -d ALL # 仅当确认无需邮件服务时执行
3. 压缩或迁移大日志文件
对于需要保留但占用空间大的日志(如访问量极高的网站日志),可压缩后归档:
bash
# 压缩旧日志(保留.gz文件,删除原文件)
gzip /var/log/nginx/access.log.1 # 压缩后变为access.log.1.gz
# 迁移大文件到外部存储(如临时挂载的硬盘)
sudo mv /www/large_database.sql /mnt/external_drive/ # 替换为实际路径
四、清理前的必做事项(避免数据丢失)
备份关键数据:清理前备份网站目录(/www/wwwroot)、数据库(mysqldump 或宝塔备份)到外部存储。
确认文件用途:删除文件前,用 cat 文件名 查看内容,或 file 文件名 判断文件类型,避免误删配置文件(如 /etc 下的文件)。
避免删除系统核心文件:以下目录绝对不能直接删除:
/bin、/sbin、/lib、/lib64(系统命令和库文件)
/boot(启动文件,删除会导致无法开机)
/etc(系统配置文件,如网络、用户配置)
分步执行:不要一次性执行大量删除命令,先清理一部分,确认系统正常后再继续。
总结
深度清理的核心逻辑是:先安全清理系统冗余 → 定位大文件 / 目录 → 针对性删除无用数据。通过 du、find 等命令精准定位空间占用源头,结合业务场景判断文件是否可删,既能最大化释放空间,又能避免系统风险。清理后建议执行 df -h 验证空间释放效果。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快