清理 VPS 存储空间
问题
最近在虚拟机上存储文件时发现预留的10G虚拟磁盘竟然占满了,于是来清理一下空间。
步骤
- 查看磁盘占用情况
sudo df -h
可以发现/dev/sda1空间已经使用7.4G,这是清理后的容量。
/dev/sda1
是 Linux 中的一个块设备文件,通常用于表示硬盘分区。在 Linux 中,硬盘通常被表示为/dev/sd*
的形式,其中*
表示一个小写字母,例如/dev/sda
、/dev/sdb
等。
当一个硬盘被分成多个分区时,每个分区都会被分配一个设备文件,用于表示分区。其中,
/dev/sda1
表示第一个分区,/dev/sda2
表示第二个分区,以此类推。
- 查看硬盘中大文件
sudo du -ah . | sort -rh | head -n 10
du
命令可以查看指定目录或文件的磁盘使用情况,包括文件大小和目录大小等。可以使用-h
选项以人类可读的方式显示文件大小。例如,以下命令将在当前目录中查找并列出所有文件和目录的大小,并按照大小排序:
在这个命令中,
-a
表示列出所有文件和目录的大小,-h
表示以人类可读的方式显示文件大小,.
表示当前目录,可以改为你想查询的目录名,sort -rh
表示按照大小逆序排序,head -n 10
表示只显示前 10 条结果。
- 分别使用命令清理大文件
发现/usr
占用较多,但是经过清理之后发现容量几乎没有变化,可以考虑跳过。同时目录包含了大量的用户安装的程序、库文件和其他资源,因此清理该目录需要谨慎操作,以免意外删除了重要文件,导致系统出现问题。接下来讲解命令的使用。
- 删除不需要的语言文件:
sudo apt autoclean
- 删除所有不再需要的包:
sudo apt autoremove --purge
- 删除不再需要的依赖项和配置文件:
sudo apt clean
接下来清理/var
var
是variable(变量)
的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
. /lib/docker/overlay2
目录是 Docker 存储驱动程序中的一个重要目录,用于存储 Docker 镜像和容器的文件系统层。在使用 Docker 时,该目录的大小可能会逐渐增加,占用大量磁盘空间。删除不需要的 Docker 镜像和容器,或者使用 Docker 的清理命令来清理无用的数据。以下是一些常用的 Docker 清理命令示例:
- 列出所有已停止的容器:
sudo docker ps -a -q -f status=exited
- 删除所有已停止的容器:
sudo docker rm $(sudo docker ps -a -q -f status=exited)
- 列出所有未被使用的镜像:
sudo docker images -q -f dangling=true
- 删除所有未被使用的镜像:
sudo docker rmi $(sudo docker images -q -f dangling=true)
- 清理所有未被使用的数据:
sudo docker system prune -a --volumes
请注意,在清理 Docker 数据时,最好备份一下需要保留的 Docker 镜像和容器,以防误删重要数据。
使用 logrotate
工具来自动轮换和删除旧日志文件。logrotate
工具可以配置为按时间、大小或其他条件来轮换和删除日志文件,以保持日志文件的大小和数量在可控范围内。
- 删除一个大文件,可以使用以下命令:
sudo truncate -s 0 /var/log/your_large_file.log
- 此命令将把
/var/log/your_large_file.log
文件的大小截断为零,即清空该文件。然后运行logrotate
命令来轮换和归档旧日志文件:
sudo logrotate -f /etc/logrotate.conf
-f
参数将强制 logrotate
立即执行轮换操作,即使当前不需要轮换文件。/etc/logrotate.conf
是 logrotate
的默认配置文件路径,可以根据需要使用不同的配置文件路径。
请注意,在使用 truncate
命令时,最好备份一下将要清空的文件,以防万一需要恢复文件内容。
使用 journalctl
工具来清理旧的日志消息和数据。journalctl
工具可以按时间、优先级、来源和关键词等过滤日志消息,以及限制日志消息的数量和时间范围。以下是一些常用的 journalctl
命令示例:
- 显示最近的 100 条系统日志信息:
sudo journalctl -n 100
- 显示某个服务的日志信息:
sudo journalctl -u your_service_name
- 显示某个时间范围内的日志信息:
sudo journalctl--since"2022-01-01 00:00:00"--until"2022-02-01 00:00:00"
- 显示某个进程的日志信息:
sudo journalctl _PID=your_process_id
清理旧的日志消息和数据,可以使用以下命令:
sudo journalctl --vacuum-size=100M
该命令将清理所有不再需要的日志消息和数据,并将日志文件大小限制为 100M。您可以根据需要调整 --vacuum-size
参数的值。请注意,此命令仅清理系统日志。
我以前基本都是access.log吃光硬盘。现在一些没必要log 的网站就不log了,很久都不会占满了。
老板,加1t数据盘
虽然看不懂,但是感觉好厉害