Оценка занимаемого файлами пространства в Linux

LinuxBeginner
Практиковаться сейчас

Введение

В этом практическом занятии (лабораторной работе) вы научитесь оценивать и анализировать использование дискового пространства в системах Linux с помощью команды du (Disk Usage, дословно «использование диска»). Управление дисковым пространством является фундаментальным навыком для системных администраторов и пользователей Linux. Команда du позволяет проверить, сколько дискового пространства используют файлы и каталоги в вашей системе.

К концу этого практического занятия вы сможете эффективно использовать команду du с различными параметрами для анализа использования диска, определения больших файлов и каталогов, а также более эффективного управления своим хранилищем.

Понимание базового использования команды 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

Отображаемое число представляет собой количество использованного дискового пространства в килобайтах (КБ). Каждый файл и каталог занимает как минимум 4 КБ дискового пространства, что обычно является минимальной единицей выделения (размером блока) на большинстве файловых систем.

  1. Чтобы проверить размер отдельных файлов, вы можете указать пути к файлам:
du ~/project/data/file1.txt ~/project/data/file2.txt ~/project/data/file3.txt

Вы заметите, что даже небольшие файлы занимают как минимум 4 КБ дискового пространства из - за выделения блоков файловой системы.

Использование человекочитаемого формата и опций сводки

На предыдущем этапе вы узнали базовое использование команды du. Однако чтение информации о использовании диска в килобайтах не всегда удобно, особенно для больших файлов и каталогов. На этом этапе вы узнаете, как использовать параметры, чтобы вывод был более читабельным.

Параметр -h (человекочитаемый формат)

Параметр -h отображает размеры в человекочитаемом формате (КБ, МБ, ГБ и т.д.), что упрощает понимание размеров файлов:

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

Параметр -h для sort позволяет правильно понимать и сортировать человекочитаемые размеры. Вывод будет отсортирован от наименьшего к наибольшему.

Для сортировки от наибольшего к наименьшему добавьте параметр -r (реверс) к sort:

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 {} \;

Эта команда находит все файлы с расширением .jpg в каталоге ~/project/data и выполняет 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, будь то личный компьютер, сервер или облачный экземпляр.