Вернуться на главную страницу


Starter.com




Эта маленькая программа была написана мной на ассемблере много лет назад еще под DOS. Тогда мне пришлось заниматься сопровождением одного программного комплекса у большого количества клиентов. Через какое-то время стало ясно, что возлагать задачу резервного копирования баз данных на пользователей (или даже местных администраторов) бесполезно – все равно в 99 случаях из 100, актуальной резервной копии не будет. Следовательно, все это должно выполняться автоматически и храниться в виде ежедневных архивов, упорядоченных по датам. При чем, устаревшие архивы должны автоматически удаляться (диски тогда были относительно небольшой емкости, и можно было нарваться на переполнение объема). Так и появился starter.

  Используемые базы данных были сетевыми, пользователей было много, и располагались они зачастую на разных этажах или даже в разных корпусах зданий. Архивирование можно было выполнять только тогда, когда база данных не использовалась. Запуск прикладных программ осуществлялся starter’ом и в каталоге с файлами баз данных создавался файл starter.cnt, в котором устанавливался счетчик подключенных пользователей, признак начала архивирования, имя компьютера, начавшего архивирование и признак успешного результата. Нулевое значение счетчика означало, что данные можно архивировать и перед запуском приложения вызывался архиватор arj, которому передавались параметры (из starter.ini) для архивирования в файл, имя которого формировалось из текущего месяца, дня, и версии архива. Архивы создавались на компьютерах клиентов, а в каталоге с файлами баз данных заводился файл протокола starter.prt, в котором отображалось, когда, кто, и с каким результатом выполнял архивирование. На все время работы клиентского приложения starter оставался в памяти и по завершению также получал управление, проверяя счетчик на признак возможности выполнять архивирование. Настройки (откуда брать данные для архивирования, куда помещать архив, какую программу запускать, сколько версий архива создавать за текущую дату в одном и том же каталоге) брались из файла ini. Поскольку возникла необходимость держать несколько starter’ов в одном каталоге, он мог быть переименован, например в progr.com, и при запуске проверял, «как его зовут» и искал файл, имя которого будет таким же под которым он запущен, но с расширением ini (progr.ini), если такой файл существовал в текущем каталоге, то настройки брались из него, если же отсутствовал - то создавался  с шаблоном настроек, которые можно было подредактировать:


FROM=M:\NEWACCNT\DATA\*.*

Откуда брать данные для архивирования

TO=C:\ARHIV\DATA\

Куда помещать архив (Заканчивается ";\"; Каталог должен существовать)

COPYES=1

Число копий за дату - 0-9  0 - архивирование на данном компьютере не делать

USERNAME=?              

Имя пользователя в сети

PROGNAME=?

Имя запускаемой программы или знак вопроса, если ничего запускать не надо. Для WIN9X-приложений START /WAIT < ;имя программы >;. Если ничего не нужно запускать, то счетчик COPYES лучше сделать равным единице



   В ключевых словах используются заглавные буквы.  При размере в 8кб. (ассемблер, однако) программка оказалась довольно функциональной и используется до сих пор. Главный ее недостаток – не умеет работать с длинными именами файлов, т.е. в ini – файле должны быть прописаны пути с короткими именами, или с длинными, преобразованными в короткие по правилам преобразования . Для архивирования используется arj.exe, который должен быть в текущем каталоге или в путях поиска, задаваемых переменной окружения path. Желательно, чтобы версия архиватора могла поддерживать длинные имена файлов. Можно поместить его в системный каталог, например, WINNT\SYSTEM32.  

Архиватор ARJ с поддержкой длинных имен <Скачать>
Starter.com - 8Кб <Скачать>

    Вариант создания архивов данных, упорядоченных по дате и времени, стандартными средствами описан в статье " Командные файлы ".

 
 


На главаную страницу



Hosted by uCoz