PERL-SCRIPT
АРХИВАЦИИ ДАННЫХ ФАБИУС
Предлагается к
использованию perl-script FABBACK.BAT архивации данных Фабиус.
В отличие от встроенной
архивации Фабиус
========================================
1. Гарантируется
сохранение целостности данных, благодаря использованию
специальной утилиты
разработчика (сервера Advantage Database) adsbackup.
2. Только для баз данных
типа ADT.
Как работает
============
1. Утилита adsbackup
копирует данные, отобранные по маске, без индексных
файлов в временную
backup-директорию.
2. Утилита winrar
сжимает файлы из шага 1 в директорию rar-архива.
3. Просматривается
rar-архив и устаревшие архивы сверх заданного числа
в пределах месяца
удаляются.
Аргументы командной
строки
==========================
%1 - число сохраняемых
предыдущих месяцев.
------------------------------------------
Например, текущий месяц
- август. Вы задаете %1=8. Скрипт будет искать данные за август,
7 месяцев до августа и
декабрь прошлого года.
Если установить %1=20,
то скрипт будет искать данные за август, 7 месяцев
до августа, все месяца
прошлого года и декабрь позапрошлого.
Значение %1=0 допустимо
- возьмутся только данные текущего месяца.
Годовые данные будут
искаться для архивации даже если %1=0.
%2 - число хранимых
копий архива.
---------------------------------
Например, задано %2=30 -
будут храниться 30 последних копий rar-архивов.
Примечание
++++++++++
При смене месяца ВСЕ
архивы прошлого месяца автоматически не удаляются.
%3 - URL директории
Фабиус.
---------------------------
Типа:
\\server\users\fabius
Такую адресацию вместо
привычной типа F:\fabius требует утилита adsbackup.
%4 - Имя директории
Справочников.
---------------------------------
Например: reflis
или: -
Никаких обратных слэшей
(типа \), двоеточий, букв диска, пробелов, кириллицы
здесь быть не должно.
Если имя
reflis-директории начинается с символа "-" (тире типа-минус),
то архивация
справочников будет опущена. То же случится, если место
имени reflis-директории
будет занимать одиночный символ типа-минус.
Примечание
++++++++++
Если справочники не
архивируются, то устаревшие архивы справочников
сверх заданного числа (в
текущем месяце) автоматически не удаляются.
%5 - Имя директории
Данных.
---------------------------
Например: opdata
Те же требования, как к
имени директории Справочников.
%6 - Полный путь и имя
директории rar-архивов.
----------------------------------------------
Например:
c:\usr\backup\zip
или \\pool\usr\backup\zip
или z:\backup\zip
%7 - Имя log-файла.
-------------------
Например:
c:\usr\backup\log\fabius.log
или: fabius.log
или:
Если имя log-файла
опущено, то в директории запуска будет
создан log-файл с именем
"backup_ГГГГММДДччммсс.log".
Пример командной строки
запуска скрипта
=======================================
fabback.bat 3 3
\\server\users\fabius reflis opdata c:\usr\backup\zip fabius.log
rem %1 %2 %3 %4 %5
%6 %7
или, для архивирования
только данных и с log-файлом, имеющем разовое имя
fabback.bat 3 3
\\server\users\fabius - opdata
c:\usr\backup\zip
rem %1 %2 %3 %4 %5
%6 %7
или, то же самое, но как
явный perl-script
perl fabback.pl 3 3
\\server\users\fabius reflis opdata c:\usr\backup\zip fabius.log
rem %1 %2 %3 %4 %5
%6 %7
Что должно быть к
моменту запуска
=================================
1. На сервере ADS в
установках базы данных количество одновременно открытых
таблиц должно быть не
меньше 1000. То же и для индексных файлов.
Дело в том, что число
справочников reflis вплотную приблизилось к 600.
Утилита adsbackup при
обработке справочников открывает их все одновременно,
плюс 2 или 3 сотни
управляющих элементов таблиц используют пользователи.
Итого - близко к тысяче.
2. На машине,
запускающей скрипт, должен быть установлен клиент ADS -
tdataset.exe иначе все
a*.dll-библиотеки из Fabius\Program копируйте
в директорию запуска
скрипта.
3. На машине,
запускающей скрипт, должен быть установлен ActivePerl.
4. На машине, куда
пишутся rar-архивы, должна быть директория %6.
Продолжая пример, если
это машина, запускающая скрипт - c:\usr\backup\zip.
Или, если это какая-то
другая машина "pool" - \\pool\usr\backup\zip,
или - z:\backup\zip.
Важно!
+++++
Убедитесь, что
пользователь машины, на которой стартует скрипт,
и от имени которого
стартует скрипт,
может читать из
директории %3, а также читать, писать и стирать в директории %6.
Например, если Вы
используете для %6 запись типа URL (\\pool\usr\backup\zip),
то следующие команды
должны завершиться хорошо
mkdir
\\pool\usr\backup\zip\aaa (создание директории %6\aaa)
rmdir
\\pool\usr\backup\zip\aaa (удаление директории %6\aaa)
Важно!
++++++
Чтобы не морочиться с
кавычками в командной строке запуска
НЕ ИСПОЛЬЗУЙТЕ КИРИЛЛИЦЫ
И ПРОБЕЛОВ В ИМЕНАХ МАШИН И ДИРЕКТОРИЙ.
Именование rar-архивов
======================
Rar-архив Справочников
получает от скрипта вот такое имя - %5%1_ГГММДД-ччмм.
Продолжая пример, если
%1=8 (кол-во предыдущих месяцев),
%4=reflis (директория справочников),
%5=opdata (директория
данных)
и скрипт запущен 27
августа 2008 года в 14 часов 26 минут,
то имя архива
справочников будет вида reflis08_080827-1428.rar
а имя архива данных -
opdata08_080827-1428.rar
В конце 28, а не 26
потому, что 2 минуты до winrar работала
adsbackup.
Удаление старых
rar-архивов сверх заданного числа
=================================================
Rar-архивы Справочников
удаляются по маске - %4%1_ГГММ,
а rar-архивы Данных -
%5%1_ГГММ.
Это значит:
1. Если на момент смены
месяца остались rar-архивы прошлого месяца,
то они так и останутся.
Например, если %2=32 и
Вы архивируете 1 раз в день, то в наступившем новом месяце
(и далее в будущем)
Вы будете наблюдать по
одному старому архиву на каждый день прошлого
месяца - итого 30 (если
в прошедшем месяце 30 дней) или 31 (если в прошедшем месяце 31 день)
Если %2=32 и архивация 2
раза в день, то ... останутся 2 архива на каждый день
из последних 16 дней
прошлого месяца - итого 32.
Если Вам не нужно
столько архивов - удалите их вручную.
2. Если Вы разок (в
начале декабря) сделали %1=12 %2=1, а потом всё время %1=3 %2=31,
то 12-ти месячный архив
никуда не денется, если только, в декабре же, еще раз
не запустите %1=12 %2=1.
Совет!
++++++
Если архив важен,
уберите его от скрипта подальше - типа
ren, move, copy ...
Log-файл
========
Скрипт пишет в
директорию запуска накопительный log-файл
с именем из аргумента %7
в DOS-кодировке.
Скрипт перехватывает и
направляет в log все сообщения
от adsbackup, winrar и
выполняемых системных команд.
В силу этого, в
появляющемся окне запуска скрипта ничего ценного
не отображается, кроме
сообщений интерпретатора Perl,
которых нет, если всё в
порядке.
ActivePerl
==========
Свободно
распространяемое ПО.
Источники:
1. Наш
ftp:\\212.248.40.154\temp\Distrib\ActivePerl-5.10
Около 17 Мгб.
2. В любом поисковике
найдете источники.
Устанавливается так:
--------------------
1.Запустить файл
ActivePerl-...-.msi, OK, ..., OK, Finish (Готово).
2.
Пуск->Программы->Стандартные->Командная строка
4. Выполните команду:
perl -h
Если видите вывод help
строки запуска perl - установка завершена.
Если нет - выполните
команду:
path
c:\perl\site\bin;c:\perl\bin;%path%
или дождитесь следующей
загрузки машины, когда переменная среды %path%
получит обновленное
установкой Perl значение.
Команда perl -h должна
выполняться правильно.
Клиент ADS -
tdataset.exe
=========================
Взять можно на нашем
ftp:\\212.248.40.154\temp\Distrib\ads\8.1\Windows\client\tdataset.exe
Устанавливается
несколько сложнее, чем ActivePerl, т.к. надо не пропустить
диалоговое окно выбора
кодировки - RUSSIAN ANSI и RUSSIAN OEM - в двух выпадающих списках.
Директория запуска
скрипта на Вашей машине
==========================================
1. Создайте пустую
директорию с любым именем и где Вам удобно.
Например,
"c:\pl".
2. Копируйте в неё из
ftp:\\212.248.40.154\_pl следующие файлы:
fabback.*
Из fabius\program
winrar.*
Из \\server-ads\Program
Files\Extended Systems\Advantage\8.1\Server
adsbackup.*
Используйте Планировщик
заданий для запуска скрипта
===================================================
1. Cоздайте в директории
запуска bat-файл вида:
c:
cd \pl
fabback.bat 3 3
\\server\users\fabius reflis opdata c:\usr\backup\zip fabback.log
и назовите его
(например) arch.bat
3. Если я хочу,
архивировать Фабиус, каждый день в 8 утра.
Для этого (в Win XP):
Пуск->Программы->Стандартные->Служебные->Назначенные
задания
Иконка "Добавить
задание".
Окно "Мастер
планирования задания",
кнопка
"Далее",
кнопка "Обзор"
- выбрать c:\pl\arch.bat,
указать имя задания с
пометкой что архивируем и во сколько (например): "arch_fabius_08-00"
установить
"ежедневно",
кнопка
"Далее",
установить время начала
"08:00",
кнопка
"Далее",
ввести (с
подтверждением) пароль (если есть) пользователя,
от имени которого запускается
задание,
кнопка
"Далее",
кнопка
"Готово".
Если Вы ошиблись с
паролем, то умный Win только сейчас скажет, что задание
не может быть выполнено.
В этом случае кликните правой кнопкой мыши
на иконке созданного
задания,
всплывающее меню ->
свойства -> вкладка "Задание" -> кнопка "Задать
пароль".
Задайте правильный
пароль.
Кликните правой кнопкой
мыши на иконке созданного задания,
всплывающее меню ->
Выполнить.
Выполните и проверьте
результаты.
Если по результату
проверки всё OK, по образу и подобию создайте по заданию
на каждое время
архивации в течение суток.
Совет!
++++++
Если у Вас есть филиалы
и директория Фабиуса содержит разноименные директории
типа-reflis и
типа-opdata, или существует несколько директорий Фабиус,
отразите специфику имен в
именах заданий.
Умный Win не даст
создать два одноимённых задания.
Примечание!
+++++++++++
Скрипт написан так, что
все имена временных файлов
и создаваемых архивов
уникальны, поэтому Вы можете
не заботиться о том, что
произойдет, если два (или
более) запущенных
архиваций наложились по времени
исполнения друг на
друга.
Планирование архивации
======================
Скрипт написан так, что
Вы можете задействовать
либо две машины -
сервер-ads и машина-запускающая-скрипт-и-хранящая-архив,
либо три машины -
сервер-ads, машина-запускающая-скрипт, емкая-машина-архив.
Наиболее процессороемкая
программа - winrar - выполняется на машине-запускающей-скрипт.
Как вариант
+++++++++++
Пусть есть один завод с
одной базой данных.
0. Разовая архивация за
60 прошедших месяцев (как изволите):
fabback.bat 60 1
\\server\users\fabius reflis opdata c:\usr\backup\zip
1. Машина №1 - двухчасовая архивация
Имя файла запуска:
arch-1m.bat
Его содержание:
c:
cd \pl
fabback.bat 0 3
\\server\users\fabius reflis opdata c:\usr\backup\zip fabback-1m.log
Запускать Планировщиком
каждые 2 часа.
Устаревшие архивы
прошлых месяцев удалять вручную,
т.к. за каждый прошлый
месяц будет навсегда сохраняться 3 архива последнего дня
прошлого месяца.
2. Машина №2 - суточная архивация
Имя файла запуска:
arch-2m.bat
Его содержание:
c:
cd \pl
fabback.bat 1 7
\\server\users\fabius reflis opdata c:\usr\backup\zip fabback-2m.log
Запускать Планировщиком
каждый день.
Устаревшие архивы
прошлых месяцев удалять вручную,
т.к. за каждый прошлый
месяц будет навсегда сохраняться 7 архивов.
3. Машина №3 - недельная архивация
Имя файла запуска:
arch-4m.bat
Его содержание:
c:
cd \pl
fabback.bat 3 5
\\server\users\fabius reflis opdata c:\usr\backup\zip fabback-4m.log
Запускать Планировщиком
каждое воскресение (начинать с апреля, если не хотим данные прошлого года).
Все замечания, пожелания
и вопросы направлять Мягкову Алексею.
==============================================================
Это типа всё.