SCROLL
Среднее время на прочтение: 2 мин.

Как использовать команду du в Linux. Поиск файлов занимающих много места.

du (disk usage) — это мощный инструмент для оценки объёма дискового пространства, используемого данным файлом или каталогом.

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

Синтаксис

Синтаксис команды du выглядит следующим образом:

du [OPTION] [FILE or DIRECTORY NAME]

Параметры:

  • -0: завершать каждую выходную строку значением null.
  • -a: вывод объема для всех файлов, а не только каталогов.
  • -c: указывает общий занимаемый размер
  • -h: вывод размеров занимаемого диска в удобном для человека формате
  • -S: не включать в вывод подкаталоги
  • -s: отображать только общее пространство, занимаемое каждым каталогом
  • --time: показывает время последней модификации любого файла или каталога
  • --exclude: исключает файл или каталог, совпадающие с шаблоном
  • --exclude-from: исключить файлы, совпадающие с любым шаблоном из файла

Использование

При вызове без аргументов du (рекурсивно) отображает список всех каталогов, существующих в текущей позиции, вместе с информацией об использовании дискового пространства.

# du
14440   ./installer/cdebconf
15516   ./installer
4       ./sysstat
4       ./private
210088  ./journal/761a6416676a44b8b699c1dd4dbe8019
210092  ./journal
60      ./apt
4       ./runit/ssh
8       ./runit
226072  .

Чтобы отобразить объём в удобном для человека формате (K — килобайты, M — мегабайты и т. д.), используем параметр -h вместе с командой du.

# du -h
15M     ./installer/cdebconf
16M     ./installer
4,0K    ./sysstat
4,0K    ./private
206M    ./journal/761a6416676a44b8b699c1dd4dbe8019
206M    ./journal
60K     ./apt
4,0K    ./runit/ssh
8,0K    ./runit
221M    .
Если нужен размер в определённых единицах, можно указать отображение данных в мегабайтах или килобайтах с помощью параметров -b, -m или -k.

Чтобы отобразить только сводную информацию, используем параметр -s. В сочетании с параметром -h, отобразится информация в удобочитаемом виде.

# du -sh
221M    .

Чтобы ограничить глубину поиска du в структуре каталогов, можно использовать параметр -d. При определении уровня глубины 1 будет исследоваться 1 каталог, при определении уровня глубины 22 каталога и так далее.

# du -d 1 /var/log
15516   /var/log/installer
4       /var/log/sysstat
4       /var/log/private
210092  /var/log/journal
60      /var/log/apt
8       /var/log/runit
226072  /var/log

Размер определенного каталога

Для определения размера определенного каталога.

# du -sh /run/
728K    /run/

Размер нескольких каталогов

Можно вывести список размеров нескольких каталогов. В примере используется так же опция -c, которая выводит сумму пространства, используемого указанными каталогами.

# du -sh -c /var/lib /var/www
221M    /var/lib
2,0G    /var/www
2,2G    итого

Включая файлы и их размер

По умолчанию, в выводе команды du отображаются только каталоги. Чтобы включить в вывод также стандартные файлы, можно использовать опцию -a.

# du -ha
4,0K    ./.cache/mc/Tree
8,0K    ./.cache/mc
12K     ./.cache
4,0K    ./.lesshst
4,0K    ./.local/share/mc/history
8,0K    ./.local/share/mc
4,0K    ./.local/share/nano/search_history
8,0K    ./.local/share/nano
24K     ./.local/share
28K     ./.local
4,0K    ./.wget-hsts
0       ./.sudo_as_admin_successful
8,0K    ./.bash_history
4,0K    ./.config/mc/ini
0       ./.config/mc/panels.ini
8,0K    ./.config/mc
12K     ./.config
4,0K    ./.profile
4,0K    ./.bashrc
4,0K    ./.selected_editor
4,0K    ./.gnupg/private-keys-v1.d
0       ./.gnupg/S.gpg-agent.ssh
0       ./.gnupg/S.gpg-agent.extra
0       ./.gnupg/S.gpg-agent.browser
4,0K    ./.gnupg/trustdb.gpg
0       ./.gnupg/S.gpg-agent
12K     ./.gnupg
4,0K    ./.ssh
100K    .

Исключение файлов

Есть два способа указать файлы и каталоги, которые следует исключить из вывода команды du.

Способ #1

Использование опции --exclude. Эта опция принимает в качестве аргумента шаблон. Все имена файлов и каталогов, соответствующие этому шаблону, будут исключены из вывода.

К примеру исключим из вывода файлы с расширением — log.

du -ha --exclude=/var/log/*.log
Можно указать несколько шаблонов исключения, повторив опцию --exclude несколько раз.
Способ #2

Использование опции -X (--exclude-from). Эта опция принимает в качестве аргумента имя файла, где в указанном файле указаны шаблоны для сопоставления (каждое сопоставление одно на строку).

du -ha --exclude-from=exclusions.txt

Сортировка

Чтобы отсортировать результаты вывода можно использовать команду sort. Для сортировки по возрастанию используйте опцию -h.

g# du -h | sort -h
4,0K    ./private
4,0K    ./runit/ssh
4,0K    ./sysstat
8,0K    ./runit
60K     ./apt
15M     ./installer/cdebconf
16M     ./installer
206M    ./journal
206M    ./journal/761a6416676a44b8b699c1dd4dbe8019
221M    .

Чтобы изменить порядок сортировки, используем опцию -r:

# du -h | sort -hr
221M    .
206M    ./journal/761a6416676a44b8b699c1dd4dbe8019
206M    ./journal
16M     ./installer
15M     ./installer/cdebconf
60K     ./apt
8,0K    ./runit
4,0K    ./sysstat
4,0K    ./runit/ssh
4,0K    ./private

Tips & Tricks

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

Для поиска самых больших файлов, можно использовать команду find вместе с du с соответствующими опциями.

find / -type f -size +50M -exec du -h {} + | sort -hr
  • где опция -size +50M для фильтрации файлов размером более 50 мегабайтов.
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.