Использование стандартной команды Linux du
очень удобно для определения объёма дискового пространства, занимаемого файлами и каталогами.
Команда имеет много опций и позволяет выводить результаты в различных форматах.
Содержание
Синтаксис
du [ПАРАМЕТР]… [ФАЙЛ]…
Суммирует использование набора ФАЙЛОВ устройства, рекурсивно с каталогами.
Опции
- -a, --all
- Печатать объём для всех файлов, а не только каталогов
- -B, --block-size=РАЗМЕР
- Использовать блоки указанного РАЗМЕРА; например,
-BM
выводит размеры в единицах, равных 1048576 байтам; см. формат РАЗМЕРА далее - -c, --total
- Выводить общий итог
- -D, --dereference-args
- Следовать только по символьным ссылкам, которые перечислены в командной строке
- -d, --max-depth=N
- Выводить общий размер каталога (или файла, если
--all
) только для N-го или меньшего уровня чем указанный аргумент командной строки; значение--max-depth=0
аналогично указанию--summarize
- -h, --human-readable
- Печатать размеры в удобном для человека виде (например,
1K
234M
2G
) - --inodes
- Вывести информацию об использованных инодах, а не о блоках
- -L, --dereference
- Разыменовывать символьные ссылки
- -l, --count-links
- Складывать размеры, если есть несколько жёстких ссылок
- -P, --no-dereference
- Не следовать по символьным ссылкам (по умолчанию)
- -S, --separate-dirs
- У каталогов не включать размер подкаталогов
- --si
- Как
-h
, но использовать множитель 1000, а не 1024 - -t, --threshold=РАЗМЕР
- Исключить элементы, которые меньше РАЗМЕРА, если это значение положительно, или размер которых больше, если это значение отрицательно
- --time
- Показывать время последнего изменения файлов в каталоге или во всех его подкаталогах
- -X, --exclude-from=ФАЙЛ
- Исключить файлы, совпадающие с любым шаблоном из ФАЙЛа
- -x, --one-file-system
- Пропускать каталоги из других файловых систем
РАЗМЕР задаётся целым числом и необязательной единицей измерения (пример: 10K это 10*1024). Единицы измерения: K, M, G, T, P, E, Z, Y (степень 1024) или KB, MB, … (степень 1000). Также можно использовать двоичные префиксы: KiB=K, MiB=M и так далее.
Примеры использования du
Список подкаталогов в определённом каталоге и занимаемое ими место:
oleg@mobile:~/store/distros:$ du -h ~/store/distros/
2,8G /home/oleg/store/distros/manjaro
6,3G /home/oleg/store/distros/kali
4,0K /home/oleg/store/distros/archlinux/iso
8,0K /home/oleg/store/distros/archlinux
4,0K /home/oleg/store/distros/slackware/slackware64-14.2-iso
8,0K /home/oleg/store/distros/slackware
4,0K /home/oleg/store/distros/lost+found
2,7G /home/oleg/store/distros/ubuntu
3,1G /home/oleg/store/distros/backtrack
15G /home/oleg/store/distros/
Опция -h
позволяет выводить размер в удобном для человека виде.
Вывод размеров не только подкаталогов, но и находящихся в ни файлов:
oleg@mobile:~/store/distros:$ du -ha ~/store/distros/
9,6M /home/oleg/store/distros/manjaro/Manjaro-User-Guide.pdf
2,8G /home/oleg/store/distros/manjaro/manjaro-xfce-20.2.1-210103-linux59.iso
2,8G /home/oleg/store/distros/manjaro
3,5G /home/oleg/store/distros/kali/kali-linux-2022.2-live-amd64.iso
2,8G /home/oleg/store/distros/kali/kali-linux-2022.2-installer-amd64.iso
6,3G /home/oleg/store/distros/kali
4,0K /home/oleg/store/distros/archlinux/iso
8,0K /home/oleg/store/distros/archlinux
4,0K /home/oleg/store/distros/slackware/slackware64-14.2-iso
8,0K /home/oleg/store/distros/slackware
4,0K /home/oleg/store/distros/lost+found
2,7G /home/oleg/store/distros/ubuntu/ubuntu-20.04.2.0-desktop-amd64.iso
4,0K /home/oleg/store/distros/ubuntu/SHA256SUMS
4,0K /home/oleg/store/distros/ubuntu/SHA256SUMS.gpg
2,7G /home/oleg/store/distros/ubuntu
3,1G /home/oleg/store/distros/backtrack/BT5R3-GNOME-64.iso
3,1G /home/oleg/store/distros/backtrack
15G /home/oleg/store/distros/
Для этого было достаточно добавления опции -a
.
Вывод общего размера файлов и каталогов:
oleg@mobile:~/store/distros:$ du -hs ~/store/distros/
15G /home/oleg/store/distros/
Для этого вместо -a
была использована опция -s
.
Использование du с другими командами
Команда Linux du
может быть объединена с другими командами с помощью pipeline (трубопровода).
Например, вы решили вывести на экран три крупнейших подкаталога:
oleg@mobile:~:$ sudo du -h /var/lib | sort -hr | head -3
764M /var/lib
709M /var/lib/mysql
317M /var/lib/mysql/linuxcookbookru
В данном случае было использовано sudo
, так как большинство файлов внутри подкаталога /var/lib
принадлежат root
и не доступны для чтения обычному пользователю.
Выводы
Использование команды du
в Linux не представляет особых сложностей. Она очень удобна для оценки дискового пространства, занимаемого файлами и каталогами.