Сканер файловой системы
Имеется крупное хранилище файлов, построенное по следующему принципу:
- основной (главный) сервер, на котором расположен вебсайт, обеспечивающий навигацию по файлам посредством ХТТП,
- несколько серверов-хранилищ, на которых расположены сами файлы, доступ к которым осуществляется по ФТП.
Считывание информации главным сервером с серверов-хранилищ происходит в реальном времени. В этом есть и плюсы, и минусы. Плюсы в 100% актуальности содержимого, минимизации загрузки главного сервера. Минусы - крайняя медлительность работы, невозможность поиска и пр. Есть желание попробовать вариант с кэшированием данных серверов-хранилищ на главном сервере. В связи с этим и возникает задача.
Нужна программа, которая, будучи запущенной на сервере-хранилище (под WinXP и выше), с заданной переодичностью в указанное время станет сканировать каталог (включая подкаталоги) и создавать базу всех файлов в XML формате. То есть фактически требуется снимок файловой системы ниже заданного каталога, содержащий:
- относительный путь,
- имя файла/каталога,
- дату создания/изменения,
- размер.
Получаемый файл далее нужно архивировать в формате GZ. Самый узкий момент в программе - утечка памяти. На нее следует обратить особое внимание. Программа будет висеть в рабочем режиме постоянно и сканировать огромное количество (более 100 000) файлов. А так как сервера-хранилища заточены под ФТП (низкопроизводительное аппаратное обеспечение), даже незначительная утечка памяти может завесить систему довольно быстро.
На первом этапе разработки достаточно создания при каждом сканировании полной базы файлов. Отводимый на этот этап срок (включая тестирование) - не более 5 дней. Оплата сразу по сдаче работы (бюджет этого проекта указан именно для первого этапа).
На втором этапе нужно будет добиться создания базы только изменений с предыдущей загрузки, чтобы каждый раз не нагружать главный сервер добавлением в БД огромного объема данных. Срок разработки и оплата для этого этапа будут обсуждаться с исполнителем отдельно.
Допустимые ЯП: C++, Pascal, Basic.