Linux 文件空间估算

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 du(磁盘使用情况,Disk Usage)命令来估算和分析 Linux 系统中的磁盘空间使用情况。磁盘空间管理是系统管理员和 Linux 用户的一项基本技能。du 命令提供了一种检查系统上文件和目录占用多少磁盘空间的方法。

在本实验结束时,你将能够有效地使用带有各种选项的 du 命令来分析磁盘使用情况、识别大文件和目录,并更高效地管理你的存储空间。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/FileandDirectoryManagementGroup -.-> linux/find("File Searching") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/SystemInformationandMonitoringGroup -.-> linux/du("File Space Estimating") linux/SystemInformationandMonitoringGroup -.-> linux/dd("File Converting/Copying") subgraph Lab Skills linux/cd -.-> lab-271271{{"Linux 文件空间估算"}} linux/mkdir -.-> lab-271271{{"Linux 文件空间估算"}} linux/find -.-> lab-271271{{"Linux 文件空间估算"}} linux/sort -.-> lab-271271{{"Linux 文件空间估算"}} linux/du -.-> lab-271271{{"Linux 文件空间估算"}} linux/dd -.-> lab-271271{{"Linux 文件空间估算"}} end

理解 du 命令的基本用法

du 命令用于估算 Linux 系统中的文件空间使用情况。在这一步中,你将学习 du 命令的基本语法和输出。

首先,让我们创建一个包含一些示例文件的目录结构来进行操作:

  1. 在你的 LabEx 虚拟机环境中打开一个终端。

  2. 使用以下命令创建一个项目目录结构:

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
  1. 现在,让我们使用基本的 du 命令来查看这些文件的磁盘使用情况:
du ~/project/data

你将看到类似如下的输出:

4       /home/labex/project/data

显示的数字是以千字节(KB)为单位的磁盘使用空间。每个文件和目录至少占用 4 KB 的磁盘空间,这通常是大多数文件系统上的最小分配单元(块大小)。

  1. 要检查单个文件的大小,你可以指定文件路径:
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 命令的高级技巧,包括按大小对目录进行排序、排除某些文件以及关注大文件。

按大小对目录排序

一个常见的任务是找出最大的目录或文件。你可以将 dusort 结合使用来实现这一点:

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

现在,你可以将 finddu 结合使用,以检查在特定时间段内修改过的文件:

## 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 环境(无论是个人计算机、服务器还是云实例)中监控和分析磁盘使用情况。