简介
在这个实验中,你将学习如何使用 du
(磁盘使用情况,Disk Usage)命令来估算和分析 Linux 系统中的磁盘空间使用情况。磁盘空间管理是系统管理员和 Linux 用户的一项基本技能。du
命令提供了一种检查系统上文件和目录占用多少磁盘空间的方法。
在本实验结束时,你将能够有效地使用带有各种选项的 du
命令来分析磁盘使用情况、识别大文件和目录,并更高效地管理你的存储空间。
在这个实验中,你将学习如何使用 du
(磁盘使用情况,Disk Usage)命令来估算和分析 Linux 系统中的磁盘空间使用情况。磁盘空间管理是系统管理员和 Linux 用户的一项基本技能。du
命令提供了一种检查系统上文件和目录占用多少磁盘空间的方法。
在本实验结束时,你将能够有效地使用带有各种选项的 du
命令来分析磁盘使用情况、识别大文件和目录,并更高效地管理你的存储空间。
du
命令的基本用法du
命令用于估算 Linux 系统中的文件空间使用情况。在这一步中,你将学习 du
命令的基本语法和输出。
首先,让我们创建一个包含一些示例文件的目录结构来进行操作:
在你的 LabEx 虚拟机环境中打开一个终端。
使用以下命令创建一个项目目录结构:
mkdir -p ~/project/data
cd ~/project/data
echo "This is file 1 content" > file1.txt
echo "This is file 2 content" > file2.txt
echo "This is a larger file with more content" > file3.txt
du
命令来查看这些文件的磁盘使用情况:du ~/project/data
你将看到类似如下的输出:
4 /home/labex/project/data
显示的数字是以千字节(KB)为单位的磁盘使用空间。每个文件和目录至少占用 4 KB 的磁盘空间,这通常是大多数文件系统上的最小分配单元(块大小)。
du ~/project/data/file1.txt ~/project/data/file2.txt ~/project/data/file3.txt
你会注意到,由于文件系统的块大小分配,即使是小文件也至少占用 4 KB 的磁盘空间。
在上一步中,你学习了 du
命令的基本用法。然而,以千字节为单位读取磁盘使用情况并不总是很方便,特别是对于较大的文件和目录。在这一步中,你将学习如何使用选项使输出更易于阅读。
-h
选项(人类可读格式)-h
选项以人类可读的格式(KB、MB、GB 等)显示大小,使你更容易理解文件大小:
du -h ~/project/data
示例输出:
4.0K /home/labex/project/data
-s
选项(汇总)-s
选项提供总磁盘使用情况的汇总,而不是显示每个子目录的使用情况:
du -s ~/project/data
示例输出:
4 /home/labex/project/data
-sh
你可以组合这些选项以获得更有用的输出。让我们创建一个更大的文件,然后使用组合选项:
cd ~/project/data
## Create a 1MB file filled with zeros
dd if=/dev/zero of=largefile.bin bs=1M count=1
示例输出:
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00302182 s, 347 MB/s
现在,使用组合选项检查磁盘使用情况:
du -sh ~/project/data
示例输出:
1.1M /home/labex/project/data
让我们也使用这些选项检查单个文件的大小:
du -sh ~/project/data/*
示例输出:
4.0K /home/labex/project/data/file1.txt
4.0K /home/labex/project/data/file2.txt
4.0K /home/labex/project/data/file3.txt
1.0M /home/labex/project/data/largefile.bin
人类可读格式使你更容易理解文件大小,特别是在处理较大的文件和目录时。
du
分析目录结构在这一步中,你将学习如何分析更复杂的目录结构的磁盘使用情况。你将创建具有不同文件大小的嵌套目录,并使用 du
命令对其进行分析。
首先,让我们创建一个更复杂的目录结构:
mkdir -p ~/project/data/docs ~/project/data/images ~/project/data/backups
现在,让我们向这些目录中添加一些文件:
## Add text files to docs directory
cd ~/project/data/docs
echo "Document 1 content" > doc1.txt
echo "Document 2 content" > doc2.txt
## Create larger files in images directory
cd ~/project/data/images
dd if=/dev/zero of=image1.jpg bs=500K count=1
dd if=/dev/zero of=image2.jpg bs=300K count=1
## Create a backup file
cd ~/project/data/backups
dd if=/dev/zero of=backup.tar bs=2M count=1
现在,让我们使用 du
命令来分析特定的目录:
## Check the size of the docs directory
du -sh ~/project/data/docs
## Check the size of the images directory
du -sh ~/project/data/images
## Check the size of the backups directory
du -sh ~/project/data/backups
你会发现,每个目录根据其包含的文件不同而具有不同的大小。
要查看包括子目录在内的整个结构的磁盘使用情况,请使用以下命令:
du -h ~/project/data
这将显示每个子目录的大小,并在最后显示总大小。
--max-depth
选项有时,你希望查看特定目录深度的磁盘使用情况。--max-depth
选项可以帮助你实现这一点:
du -h --max-depth=1 ~/project/data
这将仅显示 ~/project/data
的直接子目录的信息,而不会深入到目录树的更深处。
示例输出:
8.0K /home/labex/project/data/docs
804K /home/labex/project/data/images
2.0M /home/labex/project/data/backups
3.9M /home/labex/project/data
当你想要确定哪些顶级目录占用了最多的磁盘空间时,这个命令特别有用。
du
命令的高级用法在这最后一步中,你将学习一些使用 du
命令的高级技巧,包括按大小对目录进行排序、排除某些文件以及关注大文件。
一个常见的任务是找出最大的目录或文件。你可以将 du
与 sort
结合使用来实现这一点:
du -h ~/project/data | sort -h
sort
命令的 -h
选项使其能够正确理解和排序人类可读的大小。输出将按从小到大的顺序排列。
要按从大到小的顺序排序,可在 sort
命令中添加 -r
(反向)选项:
du -h ~/project/data | sort -hr
示例输出:
3.9M /home/labex/project/data
2.0M /home/labex/project/data/backups
804K /home/labex/project/data/images
8.0K /home/labex/project/data/docs
4.0K /home/labex/project/data/docs/doc2.txt
4.0K /home/labex/project/data/docs/doc1.txt
你可以将 find
命令与 du
结合使用,以计算特定文件类型的大小:
## Find all jpg files and check their sizes
find ~/project/data -name "*.jpg" -exec du -h {} \;
此命令会在 ~/project/data
目录中查找所有扩展名为 .jpg
的文件,并对每个文件执行 du -h
命令。
有时,你希望在计算磁盘使用情况时排除某些目录。你可以使用 --exclude
选项:
du -h --exclude="backups" ~/project/data
这将计算 ~/project/data
中除 backups
目录之外的所有内容的磁盘使用情况。
若要仅获取一个目录及其所有子目录的总计(汇总)磁盘使用量:
du -sh ~/project/data
示例输出:
3.9M /home/labex/project/data
当你只对目录树的总大小感兴趣,而不是其详细分类时,此命令特别有用。
让我们创建几个具有不同时间戳的文件来演示这一点:
## Create a directory for this example
mkdir -p ~/project/data/timeline
cd ~/project/data/timeline
## Create files with different timestamps
echo "Old file" > old_file.txt
echo "Recent file" > recent_file.txt
touch -d "1 month ago" old_file.txt
现在,你可以将 find
与 du
结合使用,以检查在特定时间段内修改过的文件:
## Find files modified in the last 7 days and check their sizes
find ~/project/data -type f -mtime -7 -exec du -h {} \;
这将显示所有在过去 7 天内修改过的文件的大小。
这些高级技巧将帮助你通过识别磁盘空间的使用位置并找到释放存储空间的机会,从而有效地管理 Linux 系统上的磁盘空间。
在本次实验中,你学习了如何使用 du
命令来估算和分析 Linux 系统中的磁盘空间使用情况。你探索了以下内容:
du
命令的基本用法,用于检查文件和目录的磁盘使用情况-h
等选项以获得人类可读的输出,以及使用 -s
选项获取摘要信息这些技能对于在 Linux 系统中有效管理磁盘空间至关重要。使用 du
命令可以帮助你识别占用大量磁盘空间的大文件和目录,从而让你在存储管理方面做出明智的决策。
通过本次实验所学的知识,你现在可以自信地在任何 Linux 环境(无论是个人计算机、服务器还是云实例)中监控和分析磁盘使用情况。