如何清理 Ubuntu 服务器磁盘空间

0 股票
0
0
0
0

介绍

你的Ubuntu服务器磁盘空间不足吗?

你想清理一下,腾出一些空间吗?如果是的话,那你来对地方了。.

许多开发者都面临着和你一样的问题,他们在 Ubuntu 服务器上部署了一两个小型应用程序,但随着时间的推移,磁盘空间被占满,他们不知道该怎么办以及如何释放磁盘空间。.

我最近也遇到过类似的情况,我的Ubuntu服务器磁盘空间使用率达到了93%,而运行在服务器上的一个小型Django应用程序就占用了大约39GB的磁盘空间。我知道增加磁盘空间是不可能的,因为应用程序文件本身不到1GB。.

最终,我不得不花一天时间检查整个服务器,确定哪些目录和程序占用了我的磁盘空间。.

在本文中,我将分享我经过验证的步骤,以查找不必要的文件并清理 Ubuntu 服务器磁盘空间。.

先决条件
  • 运行Ubuntu系统的服务器(例如,使用Hetzner Cloud)
  • 通过 SSH 访问服务器
  • 需要 root 用户或具有 sudo 权限的用户才能访问。
示例术语
  • 用户名:holu(您的服务器用户名)
  • 主机名:

如何清理 Ubuntu 服务器磁盘

说到磁盘空间占用,罪魁祸首通常是日志。Ubuntu 操作系统几乎会记录所有操作日志,许多开发者工具、服务器工具和框架,例如 Celery 和 Nginx,也会在服务器上创建和存储日志。.

这些由各种工具和软件包生成的报告通常有好几个GB,会占用大量磁盘空间并降低服务器速度。.

在介绍具体步骤之前,我想强调一点:千万不要删除根系统日志文件夹。切勿试图删除根日志文件夹(/var/log/)。否则,您将破坏许多您不想破坏的东西。.

步骤 1 – 检查磁盘空间

第一步是通过 SSH 访问 Ubuntu 服务器。您可以使用以下命令登录:

Holu,请用您的用户名请将此处替换为您的服务器IP地址。.

ssh holu@<your_host>

登录后,运行以下命令查看磁盘空间使用情况。.

sudo du -cha --max-depth=1 / | grep -E "M|G"

示例输出:

holu@<your_host>:~$ sudo du -cha --max-depth=1 / | grep -E "M|G"
2.8G /root
5.4G /usr
53M /tmp
9.8M /etc
203M /boot
du: cannot access '/proc/100209/task/100209/fd/4': No such file or directory
du: cannot access '/proc/100209/task/100209/fdinfo/4': No such file or directory
du: cannot access '/proc/100209/fd/3': No such file or directory
du: cannot access '/proc/100209/fdinfo/3': No such file or directory
2.5G /home
1.1M /run
307M /opt
522M /logs
11G /var
1.3G /snap
24G /
24G total

如您所见,此命令向我们显示了磁盘上各种文件夹/目录的大小的详细信息。.

如果您查看上面的示例输出,会发现占用磁盘空间最多的目录是 /root、/usr、/home 和 /var。仅 /var 目录就占用了 11G 的空间,这确实是一个很大的占用量。.

步骤 2 – 转到 var 目录

下一步是使用以下命令进入 /var 文件夹。.

cd /var

接下来,运行以下命令查看 /var 文件夹内所有文件夹的磁盘空间使用情况。这将有助于我们确定从哪些文件夹开始清理。.

sudo du -bsh *

示例输出:

holu@<your_host>:/var$ sudo du -bsh *
2.7M backups
150M cache
4.0K crash
3.6G lib
4.0K local
9 lock
2.5G log
3.0G mail
4.0K opt
4 run
53K snap
52K spool
44K tmp
460M www

当我在服务器上运行该命令时,可以看到 lib 和 log 目录占用了 /var 文件夹中最多的空间。.

有了这些信息,我就可以集中精力清理 lib 目录和 log 目录,从而释放硬盘上的一些空间。.

步骤 3 – 进入每个目录进行删除

接下来,我们需要进入这些目录并进行清理。本文仅以日志目录为例进行说明,但您可以按照相同的步骤清理 Ubuntu 服务器上的任何其他目录。.

要清除日志目录,我们需要删除服务器上的旧日志文件和其他不必要的文件。要访问日志目录,请运行以下命令。.

cd log

然后执行:

ls

示例输出:

holu@<your_host>:/var$ cd log
holu@<your_host>:/var/log$ ls
alternatives.log fail2ban.log php7.4-fpm.log.5.gz
alternatives.log.1 fail2ban.log.1 php7.4-fpm.log.6.gz
alternatives.log.2.gz fail2ban.log.2.gz php7.4-fpm.log.7.gz
alternatives.log.3.gz fail2ban.log.3.gz php7.4-fpm.log.8.gz
alternatives.log.4.gz fail2ban.log.4.gz php7.4-fpm.log.9.gz
alternatives.log.5.gz faillog postgresql
alternatives.log.6.gz fontconfig.log private
apport.log installer supervisor
apport.log.1 journal syslog
apport.log.2.gz kern.log syslog.1
apport.log.3.gz kern.log.1 syslog.2.gz
apport.log.4.gz kern.log.2.gz syslog.3.gz
apport.log.5.gz kern.log.3.gz syslog.4.gz
apport.log.6.gz kern.log.4.gz syslog.5.gz
apport.log.7.gz landscape syslog.6.gz
apt lastlog 

ls 命令显示了该目录中的所有文件,可以看到该目录中有很多已归档的日志文件。.

然后使用以下命令检查此目录中所有文件和文件夹的大小。.

sudo du -bsh *

这和我们上面使用的命令相同,所以你应该会看到所有文件及其大小的列表。记下日志文件夹的位置。.

步骤 4 – 删除旧日志文件

接下来,我们要删除所有旧的日志文件。旧的日志文件很容易识别,它们通常以 .gz 文件扩展名结尾。.

我们将使用命令查找所有 .gz 文件并将其从我们的服务器中删除。.

运行以下命令查找并删除日志目录中的所有 .gz 和 .log.1 文件。.

sudo find -type f \( -name "*.log.1" -o -name '*.gz' \) -delete

立即行动:

ls

您应该会看到一个已删除的日志目录。您还可以通过更改 -name 属性的值来修改此命令,以删除不同类型的文件。.

我们还没完成,因为日志目录占用了大量磁盘空间。所以,我们需要检查这个目录并清理一些文件。.

cd journal

在日志目录下,你会看到一个通常以一串数字命名的文件夹。要删除它,我们可以使用以下命令。.

此命令会将日志目录的大小减少到 100 MB,这是一个合理的大小。.

sudo journalctl --vacuum-size=100M

如果想要永久解决使用日志磁盘的问题,请按照以下步骤操作。.

sudo nano /etc/systemd/journald.conf

在配置文件中,删除 SystemMaxFileSize 和 SystemMaxFiles 设置(删除 #),并将它们设置为 100。这样应该得到:

SystemMaxFileSize=100
SystemMaxFiles=100

接下来,请执行以下操作:

sudo service systemd-journald restart

这将应用更改并删除多余的日志。.

步骤 5 – 检查 /var/lib 文件夹

根据我的经验,另一个占用大量空间的目录是 /var/lib。根据 Ubuntu 服务器上安装的库或工具的数量,该目录可能会占用大量空间。.

找出哪些库占用大量空间的快捷方法是运行以下命令。.

sudo du -hs /var/lib/* | sort -hr | head -10

此命令将显示此目录中最大的 10 个库文件夹,然后您可以使用此信息继续清理过程。.

你应该彻底删除当前未使用的库或工具。.

结论

如您所见,清理 Ubuntu 服务器并不难。按照上述步骤,我们已经成功清理了 /var/log/ 目录。按照相同的步骤清理 /var 文件夹中的其他目录,即可释放 Ubuntu 服务器上的大量空间。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢