Как узнать размер каталога в Linux

How Get Size Directory Linux



Знать размер каталога в Linux не так просто, как кажется. Команда ls -s выведет список файлов и подкаталогов с указанием их размеров. Однако размеры (около 4096 байт), указанные для каталогов, не учитывают использование диска. Размер каталога - это размер метаданных каталога.

Метаданные - это данные о данных. Кажущийся размер - это размер данных, который важен для обычного пользователя компьютера. Контент (текст) писем, изображений, видео и т. Д. Пользователя составляет видимый размер. Эти данные не хранятся в компьютере произвольно. Данные видимого размера должны храниться в режиме контроля. Он должен быть идентифицируемым. Он должен быть полным. Для этого есть и другие требования. Некоторые дополнительные данные необходимы для выполнения этих дополнительных требований, и эти дополнительные данные являются метаданными.







Помните, что в томе есть только один каталог. Остальное - это подкаталоги. Корневой каталог порождает подкаталоги, которые приводят к падению других подкаталогов. Однако подкаталоги обычно просто называются каталогами. Итак, дерево каталогов только одно.



Итак, ls -s бесполезен для получения размера каталога. Какая команда тогда пригодится? - Команда du. du означает использование диска. Он печатает использование диска в каталоге.



В этой статье объясняются различные функции команды du в Linux, которая предоставляет программисту различные способы узнать размеры каталогов и их подкаталогов. Bash - это оболочка, используемая для примеров кода в этой статье.





Содержание статьи

du без опций или аргументов

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



из

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

Каждый путь поддерева отображается на дисплее в виде строки. Каждая строка начинается с размера каталога (который является фамилией в пути). Дисплей может быть примерно таким:

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

двадцать./dir1

Обратите внимание, что неясно, указан ли размер в байтах или килобайтах, мегабайтах или гигабайтах. Килобайт символа, K означает 1024 байта; Мегабайты символа, M означает 1 048 576 байт; Гигабайт символа, G означает 1 073 741 824 байта. Для указания кратных значений следует использовать параметр -h (переключатель), как показано ниже:

из -час

Тогда дисплей будет выглядеть так:

8.0K./dir1/dir2/dir3/dir4

12К./dir1/dir2/dir3

16К./dir1/dir2

20К./dir1

Когда используется опция -h, размеры считаются читаемыми.

Примечание: с параметром –all команда du также даст информацию об использовании диска для файлов; однако использование диска для файлов в этой статье не рассматривается.

Размер других каталогов

Типичный абсолютный путь для тома Linux выглядит следующим образом:

/дом/Джон/сказать/dirTwo/dirThree/dirFour

Первый / - это корневой каталог. У этого каталога есть непосредственные подкаталоги, включая домашний каталог. В домашнем каталоге есть каталог пользователя. Если имя пользователя John, он может назвать каталог пользователя john. Каталог пользователя обозначен ~. Таким образом, пользователь может использовать команду cd ~ для доступа к своему каталогу из любого каталога. dirOne - это каталог, созданный пользователем. Пользователь также может создавать другие каталоги на этом уровне. dirTwo, dirThree и dirFour - это подкаталоги своих предыдущих каталогов, созданные пользователем.

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

/дом/Джон/сказать/dirTwo

тогда команда будет такой:

из -час /дом/Джон/сказать/dirTwo

или

из -час~/сказать/dirTwo

где ~ представляет каталог пользователя.

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

Джон@хост: ~/скажи $

означает, что пользователь находится в каталоге / home / john / dirOne, то следующая команда даст тот же результат, что и приведенная выше команда:

из -часdirTwo

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

Эта схема может использоваться для получения размера только одного каталога, последнего в пути (которому предшествует путь). Можно получить размер каталога в середине пути - см. Exclude = PATTERN ниже.

Общая сумма

Можно произвести общий размер всех задействованных каталогов. Для вышеупомянутой ситуации команда будет такой:

из -час --общий

кажущийся размер

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

из -час --apparent-sizedirTwo

Максимальная глубина

Если –max-depth = 0, du выводит размер только текущего рабочего каталога; с du –max-depth = 1, du печатает размер текущего рабочего каталога и размеры всех его подкаталогов первого уровня; с –max-depth = 2, du печатает размер текущего рабочего каталога и размеры всех его подкаталогов первого уровня и всех подкаталогов второго уровня; с –max-depth = 3, du выводит размер текущего рабочего каталога и всех его подкаталогов первого уровня, всех подкаталогов второго уровня и всех подкаталогов третьего уровня; это продолжается с увеличением значения max-depth. Пример его использования:

из -час --Максимальная глубиназнак равно2

Команда sudo

Один из каталогов с собственными подкаталогами в корневом каталоге - это var. Если пользователь вводит

из -час /куда

и нажимает Enter, он поймет, что для некоторых каталогов отказано в разрешении. То есть он не может знать размеры некоторых каталогов. В разрешении отказано, потому что пользователь не является суперпользователем. Суперпользователь имеет право видеть размеры (использование диска) этих каталогов. Итак, чтобы пользователь получил эту привилегию, он должен использовать команду sudo следующим образом:

судо из -час /куда

Если оболочка запрашивает у пользователя его пароль, пользователь должен ввести пароль и нажать Enter. С помощью команды sudo обычный пользователь (программист) может видеть размеры всех каталогов в каталоге var и подобных каталогах.

Исключение записей по размеру

Параметр –threshold = SIZE не позволяет выводить каталоги, размеры которых меньше SIZE. Для пути,

/дом/Джон/сказать/dirTwo/dirThree/dirFour

с подсказкой на[электронная почта защищена]: ~ $, затем

из -час --порог= 12K dirOne

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

–Exclude = ШАБЛОН

Этот параметр и значение могут опускать строки каталога, которые пользователю не нужны в листинге.

Чтобы опустить строку для последнего каталога, dirFour пути

/дом/Джон/сказать/dirTwo/dirThree/dirFour

команда должна быть:

из -час --исключать= сказать/dirTwo/dirThree/dirFour dirOne

Результат будет примерно таким:

4.0K dirOne/dirTwo/dirThree

8.0K dirOne/dirTwo

12K dirOne

Примечание: размеры не включают размер каталога последнего уровня (dirFour) пути.

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

из -час --исключать= сказать/dirTwo/dirThree dirOne

вывод будет примерно таким,

4.0K dirOne/dirTwo

8K dirOne

Примечание: размеры не включают размеры директорий нижнего рычага дерева.

Снова рассмотрим абсолютную ссылку,

/дом/Джон/сказать/dirTwo/dirThree/dirFour

Следующая команда получит использование диска только для каталога dirTwo, который является каталогом внутри пути. Команда такая:

из -час --исключатьзнак равно/дом/Джон/сказать/dirTwo/ * /дом/Джон/сказать/dirTwo

Аргумент имеет все предыдущие каталоги вплоть до рассматриваемого. Значение excluding включает все предыдущие каталоги, оканчивающиеся на *, сразу после того, о котором идет речь. * означает все подкаталоги на этом уровне (и их поддеревья). Результат будет примерно таким:

5,0 тыс./дом/Джон/сказать/dirTwo

Заключение

Попытка узнать размер каталога с помощью команды ls -s вводит в заблуждение. С его помощью получаются только метаданные каталога. Чтобы узнать использование диска в каталоге, следует использовать команду du. При использовании с параметром -h размеры каталогов доступны для чтения. Кажущийся размер может быть получен с помощью опции кажущегося размера. Без каких-либо параметров и аргументов команда du просто отображает размеры всех подкаталогов текущего каталога, включая размер текущего каталога. Аргумент du - это путь, который может начинаться от корня. Параметры и некоторые из их значений определяют, к каким каталогам следует обращаться. Команда sudo по умолчанию предоставляет обычным пользователям привилегии суперпользователя.