Может ли хранение 300 тыс. Файлов в одной папке вызвать проблемы?

1842
kolinko

Я сканирую большой веб-сайт (более 200 тыс. Страниц) с помощью wget (есть ли лучший инструмент, кстати?). Wget сохраняет все файлы в один каталог.

Раздел HFS (я думаю), это вызовет проблемы, если у меня есть все файлы в одном каталоге? Предполагая, что я получу доступ ко всем из них только из консоли (я знаю, что в Finder есть проблемы с файлами dirs> 5k).

Или, может быть, есть способ создать микрораздел, который был бы сжат и позволил бы быстрый и оптимизированный доступ к этому количеству файлов?

1
Какие флаги вы используете с wget? Majenko 13 лет назад 0
@Matt: -NP, почему ты спрашиваешь? kolinko 13 лет назад 0
Я обычно указываю -m - он сохраняет структуру файлового дерева для меня - я не знаю макет сайта, который вы просматриваете, но это может уменьшить количество файлов в каждом каталоге. Majenko 13 лет назад 0

2 ответа на вопрос

1
TheCompWiz

Несмотря на осуществимость базовой файловой системы, вы ДЕЙСТВИТЕЛЬНО не должны хранить столько файлов в одном каталоге. Когда придет время просмотреть содержимое этого каталога, вы быстро обнаружите, что существует ОГРОМНАЯ задержка, в то время как ОС пытается создать список файлов и тому подобное. Это действительно создает значительную нагрузку на систему.

Большинство инструментов, которые выполняют любые виды «веб-архивирования», обычно создают структуру каталогов, аналогичную разметке сайта. Почти все веб-сайты не основывают все свое содержимое вне корневого каталога ... т.е. mydomain.com/document-1 ... они будут иметь некоторую материально-техническую базу, разделяющую его на несколько путей (по разным причинам) то есть изображения идут в mydomain.com/images и все о золотой рыбке в mydomain.com/goldfish/ и т.д ...

Существует несколько инструментов, которые могут и создадут такую ​​структуру каталогов для вас. даже у wget есть опции для загрузки всего сайта. Лично я использовал « httrack » в прошлом, и он работал довольно хорошо. Есть также опции командной строки для загрузки всего сайта. Посмотрите на параметр -r (рекурсивный). Просто убедитесь, что вы настроили свой список доменов, чтобы не загружать ссылки бесконечно на нескольких сайтах. Лучше всего почитать на странице руководства wget .

Зависит от того, что вы используете для просмотра каталогов. Любой GUI-клиент, вероятно, будет плохим (TM), но я доволен Linux в оболочке Bash. PriceChild 13 лет назад 2
@PriceChild Я бы согласился ... за исключением того, что это не только графические интерфейсы ... обычно есть задания cron, которые периодически запускают такие вещи, как updatedb, и использование ftp / sftp / etc ... также может реально увеличить количество ненужных ресурсов. Удивительно, сколько можно сэкономить, просто разделив структуру каталогов. Имейте в виду ... Я использовал много * следует * (ТМ) в этом посте. Конечно, есть смягчающие обстоятельства ... но это всего лишь совет с альтернативным решением. TheCompWiz 13 лет назад 0
какие-либо предложения о том, что использовать вместо этого? Я хотел бы иметь быстрый и простой доступ к файлам из консоли (я планирую запускать регулярные выражения и тому подобное) - я не хочу разбивать файлы на каталоги, потому что написание сценариев оболочки, которые будут анализировать все файлы, будет боль тогда. kolinko 13 лет назад 0
1 слово задать расширенные. Почти все инструменты * nix имеют рекурсивную опцию для поиска во всех каталогах ниже цели ... egrep -R some_word / some / path сможет искать в каждом каталоге «some_word» и возвращать соответствующие результаты. быстрый и легкий, как правило, антонимы. Это может быть быстро, но трудно работать с - == ИЛИ == - легко, но медленно. Это помогло бы узнать больше о том, чего именно вы пытаетесь достичь. Возможно, лучшим вариантом будет выбрасывать содержимое в индексированную базу данных, а не использовать raw-файлы ... TheCompWiz 13 лет назад 1
Ты прав, egrep это то что мне нужно. Спасибо, я сделаю как ты говоришь :) kolinko 13 лет назад 0
-1
PriceChild

Википедия заявляет, что ограничение на размер файла в HFS составляет 65535. Поэтому, если ваш раздел действительно является HFS, вы попадете на это.


Из Википедии:

Кроме того, ограничение в 65 535 блоков выделения привело к тому, что файлы имели «минимальный» размер, эквивалентный 1/65 535-й по размеру диска. Таким образом, любой данный том, независимо от его размера, может хранить не более 65 535 файлов.Более того, любому файлу будет выделено больше места, чем ему фактически нужно, вплоть до размера блока выделения. Когда диски были маленькими, это не имело большого значения, потому что размер отдельного блока выделения был тривиальным, но когда диски начали приближаться к отметке 1 ГБ, наименьший объем пространства, которое мог занимать любой файл (один блок выделения), стал чрезмерно большим, тратить значительное количество дискового пространства. Например, на диске размером 1 ГБ размер блока выделения в HFS составляет 16 КБ, поэтому даже файл размером 1 байт займет 16 КБ дискового пространства. Эта ситуация была меньшей проблемой для пользователей, имеющих большие файлы (такие как изображения, базы данных или аудио), потому что эти большие файлы тратили меньше места в процентах от их размера. Пользователи с большим количеством маленьких файлов, с другой стороны, может потерять много места из-за большого размера блока выделения. Это делало разбиение дисков на меньшие логические тома очень привлекательным для пользователей Mac, поскольку небольшие документы, хранящиеся на меньшем томе, занимали бы гораздо меньше места, чем если бы они находились на большом разделе. Та же проблема существовала в файловой системе FAT16.

Я считаю, что это зависит от версии Mac OS, которая используется. Я думаю, что OS X (все версии) использует новую систему секционирования, которая смягчает эту проблему. Joshua Nurczyk 13 лет назад 0
Возможно, вы имеете в виду [HFS +] (https://secure.wikimedia.org/wikipedia/en/wiki/HFS_Plus)? Это имеет максимальное количество файлов в тысячах миллионов. PriceChild 13 лет назад 5
Да, ты меня понял, мне было лень это искать. Это научит меня. Joshua Nurczyk 13 лет назад 0
Я бы, вероятно, был бы готов поспорить, что 50p Merlin использует HFS +, а не HFS ... :-) PriceChild 13 лет назад 1
диск объемом 300 ГБ, и был недавно отформатирован, так что, скорее всего, это HFS + :) kolinko 13 лет назад 3