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

Я не могу оставлять комментарии, но в отношении ответа FastTrack также помните, что окончание строки может быть только одиночным символом. Я предлагаю

substr(trim($string), -1)

EDIT: Мой код ниже был отредактирован кем-то, что делает его не тем, что я указал. Я восстановил исходный код и изменил формулировку, чтобы сделать его более понятным.

trim (или rtrim) удалит все пробелы, так что если вам нужно проверить пробел, вкладку или другие пробелы, вручную сначала заменить различные окончания строк:

$order = array("\r\n", "\n", "\r");
$string = str_replace($order, '', $string);
$lastchar = substr($string, -1);
531
задан poolie 28 February 2016 в 06:04
поделиться

11 ответов

FAT32:

  • Максимальное количество файлов: 268,173,300
  • Максимальное количество файлов на каталог: 2 <глоток> 16  -  1 (65,535)
  • Максимальный размер файла: 2  GiB -  1 без LFS, 4  GiB -  1 с [1 115]

NTFS:

  • Максимальное количество файлов: 2 <глоток> 32  -  1 (4,294,967,295)
  • Максимальный размер файла
    • Реализация: 2 <глоток> 44  -  2 <глоток> 6 байты (16  TiB -  64  кибибайт)
    • Теоретический: 2 <глоток> 64  -  2 <глоток> 6 байты (16  EiB -  64  кибибайт)
  • размер Максимальной громкости
    • Реализация: 2 <глоток> 32  -  1  кластеры (256  TiB -  64  кибибайт)
    • Теоретический: 2 <глоток> 64  -  1  clusters  (1  YiB -  64 кибибайта)

ext2:

  • Максимальное количество файлов: 10 <глоток> 18
  • Максимальное количество файлов на каталог: ~1.3  ×   10 <глоток> 20 (производительность выпускает прошлые 10,000)
  • Максимальный размер файла
    • 16  гибибайт (размер блока 1  кибибайт)
    • 256  гибибайт (размер блока 2  кибибайт)
    • 2  тебибайт (размер блока 4  кибибайт)
    • 2  тебибайт (размер блока 8  кибибайт)
  • размер Максимальной громкости
    • 4  тебибайт (размер блока 1  кибибайт)
    • 8  тебибайт (размер блока 2  кибибайт)
    • 16  тебибайт (размер блока 4  кибибайт)
    • 32  тебибайт (размер блока 8  кибибайт)

ext3:

  • Максимальное количество файлов: минута (volumeSize /  2 <глоток> 13 ,   numberOfBlocks)
  • Максимальный размер файла: то же как размер ext2
  • Максимальной громкости: то же как ext2

ext4:

  • Максимальное количество файлов: 2 <глоток> 32  -  1 (4,294,967,295)
  • Максимальное количество файлов на каталог: неограниченный
  • Максимальный размер файла: 2 <глоток> 44  -  1  байты (16  TiB -  1)
  • размер Максимальной громкости: 2 <глоток> 48  -  1  байты (256  TiB -  1)
694
ответ дан hackingpro 28 February 2016 в 06:04
поделиться

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

2
ответ дан Goyuix 28 February 2016 в 06:04
поделиться
  • 1
    @YumYumYum " Они не делают work" исключительно бесполезно. Почему don' t они работают? – Nick Johnson 20 August 2013 в 11:50

Я работаю над подобной проблемой прямо сейчас. Мы имеем hierarchichal структуру каталогов и используем идентификаторы изображения в качестве имен файлов. Например, изображение с id=1234567 помещается в

..../45/67/1234567_<...>.jpg

, использование длится 4 цифры для определения, куда файл идет.

С несколькими тысячами изображений, Вы могли использовать одноуровневую иерархию. Наш системный администратор предложил не больше, чем, чтобы несколько тысяч файлов в любом данном каталоге (ext3) для эффективности / скопировали / безотносительно других причин, которые он имел в виду.

22
ответ дан armandino 28 February 2016 в 06:04
поделиться
  • 1
    Я использовал бы его очень экономно, и только если Вы намереваетесь отдать значение, подобное тому, в чем Вы передали. Создание md5 хеша чего-то полностью изменяет его, таким образом, Вы wouldn' t хотят передать ссылкой. – Tyler Carter 28 January 2010 в 20:53

Это зависит немного от определенной файловой системы, используемой на сервере Linux. В наше время значение по умолчанию является ext3 с dir_index, который делает ищущие большие каталоги очень быстро.

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

существует предел общему количеству файлов в одном каталоге. Я, кажется, помню его определенно работание до 32 000 файлов.

56
ответ дан Bart Schuller 28 February 2016 в 06:04
поделиться

Я вспоминаю запущение программы, которая создавала огромную сумму файлов в выводе. Файлы были отсортированы в 30 000 на каталог. Я не вспоминаю чтение никого проблемы, когда я должен был снова использовать произведенный вывод. Это был на 32-разрядном Ubuntu ноутбук Linux, и даже , Наутилус отобразил содержание каталога, хотя после нескольких секунд.

ext3 файловая система: Подобный код 64-разрядной системы имел дело хорошо с 64 000 файлов на каталог.

3
ответ дан Peter Mortensen 28 February 2016 в 06:04
поделиться
  • 1
    В CentOS 6 я устанавливаю его, и это говорит: Getting source code..../build_script.sh: line 23: apt-get: command not found – YumYumYum 6 February 2014 в 07:41

Вопрос сводится к тому, что Вы собираетесь сделать с файлами.

В соответствии с Windows, любой каталог с больше, чем 2k файлами имеет тенденцию открываться медленно для меня в Проводнике. Если они - все файлы изображений, больше, чем 1k имеют тенденцию открываться очень медленно в режиме просмотра миниатюр.

Когда-то, наложенный системой предел был 32,767. Это выше теперь, но даже который является слишком многими файлами для обработки когда-то при большинстве обстоятельств.

4
ответ дан Yes - that Jake. 28 February 2016 в 06:04
поделиться

Следует иметь в виду, что на Linux, если у Вас есть каталог со слишком многими файлами, оболочка не может быть в состоянии развернуть подстановочные знаки. У меня есть эта проблема с фотоальбомом, размещенным на Linux. Это хранит все измененные изображения в единственном каталоге. В то время как файловая система может обработать много файлов, оболочка не может. Пример:

-shell-3.00$ ls A*
-shell: /bin/ls: Argument list too long

или

-shell-3.00$ chmod 644 *jpg
-shell: /bin/chmod: Argument list too long
47
ответ дан Steve Kuo 28 February 2016 в 06:04
поделиться
  • 1
    В этом случае статья, с которой я связался, является чем-то, что Вы должны чтение readlly;-);; предложение, которое я заключил в кавычки, конечно - и существует объяснение сразу после (который я didn' t кавычка) ;; PHP не является C, например, ^^ – Pascal MARTIN 28 January 2010 в 20:53

Самая большая проблема, с которой я столкнулся, находится в 32-разрядной системе. Как только Вы передаете определенное число, инструменты как 'ls' прекращают работать.

Попытка сделать что-либо с тем каталогом, как только Вы передаете тот барьер, становится огромной проблемой.

12
ответ дан Peter Mortensen 28 February 2016 в 06:04
поделиться

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

, Например, ext3 может иметь много тысяч файлов; но после нескольких тысяч, это раньше было очень медленно. Главным образом при списке каталога, но также и при открытии единственного файла. Несколько лет назад это получило 'htree' опцию, которая существенно сократилась, время должно было получить inode, учитывая имя файла.

Лично, я использую подкаталоги для хранения большинства уровней менее чем приблизительно тысячей объектов. В Вашем случае я создал бы 256 каталогов с двумя последними шестнадцатеричными цифрами идентификатора. Используйте последнее а не первые цифры, таким образом, Вы сбалансировали загрузку.

6
ответ дан Peter Mortensen 28 February 2016 в 06:04
поделиться
  • 1
    Вы могли уточнить немного? какова идея? Вы помещаете | и затем Ваша строка ниже использования того же добавления отступа? Я can' t действительно заставляют его работать. – Spyros 24 March 2011 в 05:33

Это абсолютно зависит от файловой системы. Много современных файловых систем используют достойные структуры данных для хранения содержания каталогов, но более старые файловые системы часто просто добавили записи в список, так получение файла было O (n) операция.

, Даже если файловая система делает его правильно, для программ все еще абсолютно возможно, что содержание каталога списка, чтобы испортить и сделать O (n^2) вид, так чтобы быть на безопасной стороне, я всегда ограничивал бы количество файлов на каталог к не больше, чем 500.

6
ответ дан Michael Borgwardt 28 February 2016 в 06:04
поделиться
  • 1
    Обновленный мой ответ.. Да Вы используете | после ключа и начинаете расположенный с отступом многострочный текст и поддерживаете добавление отступа для длинной строки. – Jake Dempsey 24 March 2011 в 05:50

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

Как пример, F-пятно хранит фото файлы как YYYY\MM\DD\filename.ext, что означает самый большой каталог, я должен был иметь дело с тем, вручную управление моим ~20000-фото набором является приблизительно 800 файлами. Это также делает файлы более легко доступными для просмотра из приложения сторонних производителей. Никогда не предполагайте, что Ваше программное обеспечение является единственной вещью, которая будет получать доступ к файлам Вашего программного обеспечения.

5
ответ дан Sparr 28 February 2016 в 06:04
поделиться
  • 1
    Отметьте, хотя то выполнение fib.map {|x| x+1}.take(10) не будет работать, потому что карта попытается создать массив. Также обратите внимание, что, если Вы делаете fib.take(10) дважды, элементы будут вычислены дважды (в отличие от ленивых списков, где элементы сохранены в памяти однажды they' вычисленное ре). Так этот isn' t точно эквивалентный ленивым спискам. – sepp2k 3 August 2010 в 09:22
Другие вопросы по тегам:

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