Команда du в Linux: оценка занимаемого файлами пространства

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) мы рассмотрим команду du (disk usage) в Linux, которая представляет собой мощный инструмент для оценки и анализа использования дискового пространства. Представьте, что вы являетесь системным администратором, которому поручено управление быстро растущим файловым сервером. Ваша задача - определить каталоги и файлы, занимающие большое количество пространства, чтобы оптимизировать использование хранилища. Команда du станет вашим надежным инструментом для расследования использования дискового пространства.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 99%. Он получил 100% положительных отзывов от учащихся.

Понимание основ команды du

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

Сначала перейдем в директорию проекта, где мы будем проводить наше исследование:

cd ~/project

Теперь запустим базовую команду du:

du

Совет: Файлы и папки создаются случайным образом, и их размеры также случайны, поэтому результаты могут отличаться при каждом запуске.

Вы увидите вывод, похожий на следующий:

0      ./documents/reports
0      ./documents
10240  ./backups
0      ./logs/archive
0      ./logs/system
5120   ./logs/application
5120   ./logs
15360  .

Каждая строка показывает две части информации:

  1. Использование дискового пространства (в КБ)
  2. Соответствующий путь к директории

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

Запустим команду с опцией -h (human-readable - человекочитаемый формат):

du -h

Теперь вы увидите вывод, похожий на следующий:

0      ./documents/reports
0      ./documents
10M    ./backups
0      ./logs/archive
0      ./logs/system
5.0M   ./logs/application
5.0M   ./logs
15M    .

Опция -h преобразует размеры в более удобный для человека формат (K для килобайтов, M для мегабайтов и т.д.). Это делает нам гораздо проще понять информацию с первого взгляда.

Несколько важных замечаний:

  • Точка . в конце представляет текущую директорию (в данном случае ~/project).
  • Использование дискового пространства директории включает использование всех ее поддиректорий.
  • Размеры, которые вы видите, могут быть немного разными, так как скрипт настройки генерирует случайные размеры файлов.

Исследование конкретных директорий

Теперь, когда мы понимаем основы, давайте углубимся в исследование конкретных директорий. Мы сосредоточимся на директории logs, которая, по-видимому, занимает значительное количество пространства.

Сначала перейдем в директорию логов:

cd ~/project/logs

Теперь используем команду du для исследования этой директории:

du -h

Вы, возможно, увидите такой вывод:

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

Это дает нам разбивку использования дискового пространства для каждой поддиректории внутри директории логов. Но что, если мы хотим увидеть только общий объем для директории логов?

Мы можем использовать опцию --max-depth, чтобы ограничить, насколько глубоко команда du будет просматривать структуру директорий:

du -h --max-depth=0

Эта команда выведет только общий объем для текущей директории:

5.0M   .

Опция --max-depth=0 сообщает команде du показывать только текущую директорию, не заходя в какие-либо поддиректории.

Чтобы увидеть только непосредственные поддиректории, используйте --max-depth=1:

du -h --max-depth=1

Вывод:

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

Это дает нам более ясное представление о том, какие поддиректории занимают больше всего пространства.

Опция --max-depth особенно полезна, когда вы работаете с глубоко вложенными структурами директорий и хотите сосредоточиться на определенном уровне иерархии.

Сортировка и анализ использования дискового пространства

Теперь, когда мы определили поддиректории, занимающие больше всего пространства, давайте научимся сортировать результаты. Это поможет нам быстро определить наибольших потребителей дискового пространства.

Мы будем использовать команду sort в сочетании с du. Не беспокойтесь, если вы не знакомы с sort — мы объясним, как она работает.

Сначала отсортируем вывод команды du по размеру:

du -h | sort -h

Эта команда выполняет две задачи:

  1. du -h: Запускает команду для анализа использования дискового пространства с выводом в человекочитаемом формате.
  2. |: Это конвейер (pipe). Он берет вывод команды слева и передает его в качестве входных данных команде справа.
  3. sort -h: Сортирует входные данные численно на основе человекочитаемых размеров.

Вы, возможно, увидите такой вывод:

0     ./archive
0     ./system
5.0M  .
5.0M  ./application

Вывод отсортирован от наименьшего к наибольшему. Но часто нас больше интересуют сначала самые большие директории. Чтобы изменить порядок сортировки, мы можем добавить опцию -r к команде sort:

du -h | sort -hr

Вывод:

5.0M  ./application
5.0M  .
0     ./system
0     ./archive

Теперь мы можем четко видеть, какие поддиректории в папке логов занимают больше всего пространства, в порядке убывания.

Чтобы сосредоточиться только на непосредственных поддиректориях и отсортировать их, мы можем объединить изученные техники:

du -h --max-depth=1 | sort -hr

Эта команда покажет и отсортирует только непосредственные поддиректории текущей директории.

Помните, сила командной строки заключается в объединении простых команд для выполнения сложных операций. Мы только что объединили du, sort и различные опции для быстрого анализа использования дискового пространства!

Поиск самых больших файлов

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

Мы будем использовать команду find вместе с du. Не беспокойтесь, если вы не знакомы с find — мы объясним, как она работает.

Сначала вернемся в директорию проекта:

cd ~/project

Теперь используем find и du для поиска самых больших файлов:

find. -type f -exec du -h {} + | sort -hr | head -n 5

Эта команда может показаться сложной, но давайте разберем ее по частям:

  1. find. -type f: Ищет все файлы (-type f) в текущей директории (.) и ее поддиректориях.
  2. -exec du -h {} +: Выполняет du -h для каждого найденного файла. {} заменяется на имя файла, а + сообщает find передать как можно больше имен файлов в каждый вызов du.
  3. sort -hr: Сортирует результаты по размеру в обратном порядке (сначала самые большие).
  4. head -n 5: Показывает только первые 5 результатов.

Вы, возможно, увидите такой вывод:

10M    ./backups/large_backup.bak
5.0M   ./logs/application/large_app_log.log
0      ./logs/system/placeholder.log
0      ./logs/archive/placeholder.log
0      ./logs/application/placeholder.log

Этот вывод показывает пять самых больших файлов в директории проекта и их размеры.

Чтобы сосредоточиться на файлах, больших определенного размера, мы можем изменить нашу команду. Найдем файлы размером более 1 МБ:

find. -type f -size +1M -exec du -h {} + | sort -hr

В этой команде добавлено -size +1M для фильтрации файлов размером более 1 мегабайта.

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

Генерация отчета об использовании дискового пространства

В качестве последнего шага в нашем исследовании дискового пространства давайте создадим обширный отчет об использовании дискового пространства для всей директории проекта. Этот отчет поможет нам обобщить наши выводы и представить их команде.

Сначала убедимся, что мы находимся в директории проекта:

cd ~/project

Теперь создадим детальный отчет с использованием команды du и сохраним его в файл:

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

Разберем эту команду на части:

  1. du -h --max-depth=2: Показывает использование дискового пространства до двух уровней вложенности в человекочитаемом формате.
  2. sort -hr: Сортирует результаты по размеру в обратном порядке (сначала самые большие).
  3. > disk_usage_report.txt: Сохраняет вывод в файл с именем disk_usage_report.txt. Символ > называется оператором перенаправления - он берет вывод, который обычно выводится на экран, и "перенаправляет" его в файл.

Теперь, когда мы создали наш отчет, давайте посмотрим на его содержимое:

cat disk_usage_report.txt

Вы должны увидеть обширный список директорий и их размеров, отсортированный от самого большого к самому маленькому.

Для получения сводки по самым большим директориям мы можем использовать команду head для просмотра только первых записей:

head -n 10 disk_usage_report.txt

Это покажет вам 10 самых больших директорий в вашем проекте.

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

Резюме

В этом практическом занятии (lab) мы изучили мощную команду du и ее применение в управлении дисковым пространством. Мы научились:

  1. Использовать базовую команду du для оценки использования дискового пространства.
  2. Делать вывод человекочитаемым с помощью опции -h.
  3. Исследовать конкретные директории и ограничивать глубину просмотра с помощью --max-depth.
  4. Сортировать и анализировать результаты анализа использования дискового пространства.
  5. Найти самые большие файлы в директории.
  6. Генерировать обширные отчеты об использовании дискового пространства.

Эти навыки являются обязательными для любого системного администратора или продвинутого пользователя, управляющего ресурсами хранения.

Дополнительные опции команды du, не рассмотренные в этом практическом занятии, включают:

  • -s: Отображать только общий объем для каждого аргумента.
  • -c: Выводить общий итог.
  • -a: Показывать использование дискового пространства как для файлов, так и для директорий.
  • --time: Показывать время последнего изменения для каждой директории.
  • --exclude=PATTERN: Исключать файлы или директории, соответствующие шаблону (PATTERN).