Команда Linux du: Оценка дискового пространства

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

Введение

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

Понимание основ 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    .

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

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

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: Сортирует входные данные численно, учитывая суффиксы размеров (K, M, G).

Вы увидите примерно следующее:

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

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

du -h | sort -hr

Вывод:

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

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

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

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 самых объемных каталогов в вашем проекте.

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

Резюме

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

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

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

Дополнительные опции du, не затронутые в этой работе:

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