Количество файлов в каталоге до увеличения размера файла каталога

Я думаю, что tput liпоказывает количество строк вашего окна терминала. Вычтите два, а затем используйте это значение с head -n, чтобы отобразить только первые n строк вывода. Это оставит вашу команду в первой строке и подсказку в последней строке.

3
11.01.2020, 18:31
2 ответа

Формат записей каталога ext4 задокументирован в ядре . Есть две возможности.

  • Для линейных каталогов каждая запись занимает восемь байтов плюс имя файла (ноль -завершение ), округленное до четырех байтов. Таким образом, n файловых записей занимают 8 × n байтов плюс длины всех имен файлов, округленные до четырех (, включая завершающий ноль ). Каталоги всегда включают .и .., каждый из которых занимает двенадцать байтов. Каждый линейный каталог также может иметь контрольную сумму из двенадцати -байтов. Последняя запись в блоке имеет увеличенную длину записи, чтобы покрыть оставшееся место в текущем блоке, так что записи каталога никогда не охватывают два блока файловой системы.
  • Для каталогов хеш-дерева первый блок данных в каждом каталоге имеет корневую запись размером 40 -байт (, которая включает записи файлов для .и ..), а каждый последующий блок данных имеет 18 -байтов. ] байтовый узел. Узлы занимают восемь байт каждый,и записи файлов используют ту же структуру данных, что и в линейном каталоге, в конечном счете, как линейный массив. Таким образом, количество места, занимаемого каталогом, вычислить сложнее :каждый файл занимает восемь байтов плюс длина его имени, округленного до четырех байтов, а древовидная структура занимает 40 байтов для первого блока плюс 18 байтов для каждого дополнительного блока. блок и восемь байтов на узел.

Если вы хотите быстро увеличить размер каталога, заполните его файлами с длинными именами файлов — имена файлов могут иметь длину до 254 байт плюс завершающий нулевой байт, занимающий всего 264 байта, поэтому 16 таких записи в каталоге любого типа потребуют более 4096 байт.

Чтобы определить, является ли каталог линейным или хешированным, проверьте его inode, например. с помощьюdebugfs:

debugfs: show_inode_info /path/to/directory
Inode: 7329   Type: directory    Mode:  0755   Flags: 0x1000
Generation: 2283115506    Version: 0x00000001
...

Флаги будут показывать установленное значение 0x1000, если каталог хеширован, иначе не установленное значение.

5
27.01.2020, 21:20

Новый каталог:

mkdir newtemp

Размер нового каталога:

ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 6 Jan 11 17:42 newtemp

Создать новый пустой файл касанием

touch 1

Перепроверьте размер:

ls -l | grep newtemp
drwxr-xr-x 2 jsevans users 15 Jan 11 17:42 newtemp

Поэтому необходим 1 файл.

Если это не ответ на ваш вопрос, просмотрите полную документацию по команде ls в соответствии со страницей руководства.

-2
27.01.2020, 21:20

Теги

Похожие вопросы