Ubuntu系统清理大文件的常用方法
在清理前,需先通过命令找出系统中占用空间大的文件或目录,避免盲目删除。以下是几种高效查找方式:
find命令按大小查找find是Linux下最基础的文件查找工具,可根据文件大小、类型、名称等条件筛选。
find . -type f -size +100M
其中,.表示当前目录,-type f限定为文件,-size +100M表示大于100MB(支持+500M、+1G等单位)。.log日志文件):find . -type f -name "*.log" -size +100M
find / -xdev -type f -size +1G -mtime +30
-xdev避免跨设备查找(如外接磁盘),-mtime +30表示30天未修改。du命令查看目录/文件大小du(Disk Usage)可统计目录或文件的磁盘使用量,配合排序命令能快速定位大目录:
du -hsx * | sort -rh | head -10
其中,-h表示人类可读(如KB、MB、GB),-s显示总大小,-x不跨设备,head -10显示前10个结果。sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 20
sudo获取root权限(避免权限不足),2>/dev/null忽略错误信息(如权限拒绝)。找到大文件后,可根据文件用途选择删除或转移。以下是常见场景的处理方法:
若已通过find或du定位到无需保留的大文件(如旧备份、下载的大型安装包),可使用rm命令删除:
rm /path/to/large_file.iso # 替换为实际文件路径
若需批量删除find找到的文件,可结合-exec选项:
find . -type f -name "*.iso" -size +500M -exec rm {} \;
注意:rm命令会永久删除文件,删除前务必确认文件无用!
系统日志(如/var/log目录下的syslog、auth.log)会随时间积累占用大量空间,可通过以下命令清理:
syslog):sudo truncate -s 0 /var/log/syslog
*.log.1、*.gz):sudo rm -f /var/log/*.log.* # 谨慎操作,避免删除正在使用的日志
sudo journalctl --vacuum-time=3d # 保留最近3天的日志
sudo journalctl --vacuum-size=100M # 限制日志总大小为100MB
这些命令会自动删除过期日志,避免手动维护。Ubuntu系统升级时会保留旧内核,占用/boot分区空间。可通过以下步骤删除旧内核:
dpkg --list | grep linux-image
uname -r
linux-image-5.15.0-86-generic):sudo apt purge linux-image-5.15.0-86-generic linux-headers-5.15.0-86-generic
删除后运行sudo update-grub更新引导加载器。若使用Snap软件包(如Slack、VS Code),其缓存会占用/var/lib/snapd/cache目录空间,可通过以下命令清理:
sudo rm -rf /var/lib/snapd/cache/*
此命令会删除旧版本的Snap包,下次启动应用时会自动下载所需版本,不影响使用。
APT包管理器会缓存下载的.deb安装包(位于/var/cache/apt/archives),可通过以下命令清理:
sudo apt clean
sudo apt autoclean
建议定期执行(如每月一次),避免缓存过多。用户浏览图片、视频时,系统会自动生成缩略图(存储在~/.cache/thumbnails),可通过以下命令清理:
rm -rf ~/.cache/thumbnails/*
删除后,下次浏览文件时会重新生成缩略图,不影响正常使用。
若需定期清理大文件,可通过cron设置定时任务:
crontab -e
.log文件):0 1 * * * find /var/log -type f -name "*.log" -size +100M -delete
保存退出后,系统会自动执行该任务。可根据需求调整时间和清理条件。/usr、/sbin、/etc等系统目录下的文件,删除可能导致系统崩溃。ncdu(终端图形化工具)或Stacer(图形界面工具)辅助查找大文件,操作更直观。