Сколько файлов я могу иметь в одном каталоге?

Этот вопрос относится к этот .

Я работаю с анимацией, которая генерирует МНОГО файлов (+/- 1 000 000), обычно хранящихся в одном каталоге. В Mac Os X некоторые ошибки приводили к более чем +/- 30 000 файлов, поэтому я использовал для разбивки анимации на различные каталоги.

В Ubuntu есть ли ограничение на количество файлов, которое может содержать один каталог?

21
задан 13 April 2017 в 15:24

1 ответ

Ubuntu не ограничивает размер каталога, он навязывается файловой системой. Каждый файл и каталог - это так называемый индекс. Вы можете использовать df -i для проверки количества используемых inode и доступных для всех смонтированных файловых систем.

Я только что создал 1 миллион и один файл без проблем, потому что мой предел inode для моего домашнего раздела ext4 в 50 ГБ (46 ГиБ) достаточно велик.

Я использовал расширение оболочки для создания файлов в сочетании с утилитой touch:

mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}

Это создает 1000001 файлов, которые можно проверить с помощью ls | wc -l. Почему 300000..600000, а не 300001..600000? Потому что мне было лень ставить эту цифру в конце.

df -i выглядит так:

/dev/sda6            3055616 1133635 1921981   38% /home

Теперь удалите тестовые файлы (cd ..&&rm -f test заняло гораздо больше времени, поэтому используйте rm с именами файлов):

rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f

и число используемых inode уменьшилось сразу после удаления файлов:

/dev/sda6            3055616  133634 2921982    5% /home

Обратите внимание, что даже если файловая система допускает такое большое количество файлов, хранить такие большие файлы в одном каталоге - ужасная идея , По крайней мере, используйте некоторые подкаталоги со структурой, подобной f/i/l/e/filename.ext. Программы часто не ожидают такого большого количества файлов.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

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