Система резервного копирования
Вначале был сервер... Никому не нужный. Intel P200Pro, RAID DAC960 45 Гб, ОЗУ 128 Мб. В него воткнули стриммер Seagate Scorpion 24. Вот что получилось.
Была поставла задача копировать файлы с серверов Netware. Проблема была в том, что надо было делать копии открытых DBF (FoxPro). После долгих мытарств и покупки какого-то "голдсупербекапа фо винды" NT был снесен. Кроме всего прочего из него так и не получилось автоматически регистрироваться в Netware. Была поставлена OS/2 (ACP1). К радости, драйвер для DAC960 входит в поставку. Для автоматической регистрации в Novell используется прога attach2.
Скрипт для запуска такой:
В процессе работы были случаи отрубания дисков (Netware, к примеру, сдыхала, свитч) после востановления связи диски не подключались сами и потому этот командник был засунут в RSched (шедулер), который его выполняет при отсутсвии файлов vol$log.err на дисках O: и F:-- cut -- c: cd \netware attach2 server1 user rassword map root O:=server1\DATA: attach2 server2 user rassword map root F:=server2\DATA: map del L: -- cut --
Для копирования данных используется dsync (от Zuko) и два конфигурационных файла к нему. Запуск (тем же Rsched) днем
ночьюdsync.exe -v dsync_day.cfg
Копирование проводится два раза в сутки (в 0 часов и в 12 часов) в такую структуру каталогов:dsync.exe -v dsync_NIGHT.cfg
Естественно, копируется не все данные с дисков Netware, а только важные базы. Каталог BACKUP зашарен по сети и, так как данные там лежат ничем не упакованные, с сохранением структуры каталогов, их можно легко "восстановить" на сервер с любого компьютера в сети.\BACKUP \DAY - 12 часов дня \SERVER1 - 1 сервер \SERVER2 - 2 сервер \NIGTH - 0 часов \SERVER1 - 1 сервер \SERVER2 - 2 сервер
Потом потребовалось делать копии баз Oracle. Работает это так:
- Средствами Oracle с разных серверов(Windows NT) делаются архивные копии на диск сервера NT.
- Из оси подключаем диск NT
при старте системы:
этот файл также запускается RSched при отсутствии диска N:--cut startlanserver.cmd -- NET START SERVER @if errorlevel 2 C:\IBMLAN\NETPROG\lserr.exe logon user /p:password --cut--
этот файл необязателен, пиликает просто :) взят из доки по REXX`у-- cut att.cmd -- net use n: \\nt\disk call c:\start\beep.cmd --cut--
--- beep.cmd --- /* C scale */ note.1 = 262 /* middle C */ note.2 = 294 /* D */ note.3 = 330 /* E */ note.4 = 349 /* F */ note.5 = 392 /* G */ note.6 = 440 /* A */ note.7 = 494 /* B */ note.8 = 524 /* C */ do i=1 to 8 call beep note.i,250 /* hold each note for */ /* one-quarter second */ end do i=1 to 8 call beep note.i,250 /* hold each note for */ /* one-quarter second */ end do i=1 to 8 call beep note.i,250 /* hold each note for */ /* one-quarter second */ end --- beep.cmd ---
- С помощью BackAgain/2000
копируем все базы Oracle на стриммер.
BackAgain каждый раз перезаписывает ленту и после копирования ее "выкидывает".
Копирование происходит ночью с понедельника по пятницу (в выходные некому
ленту менять). Всего используется 5 лент, по одной на каждый день, таким
образом есть пять копий баз данных. В рабочее время каждые полчаса RSched
начинает запускать этот скрипт:
E-mail, на который отправляется сообщения -- это алиас в почтовом сервере Weasel. Это сообщение получают 4 человека.----- /* Проверка готовности стриммера */ call RxFuncAdd 'BaiiLoadFuncs', 'BAIIREXX', 'BaiiLoadFuncs' call BaiiLoadFuncs ret = RxFuncAdd('BaiiCheckReady', 'BAIIREXX', 'BaiiCheckReady') ret = BaiiCheckReady('ScsiTape:0') say 'BaiiCheckReady result = ' ret IF ret \= "READY" then do '@c:\netware\send.exe /P' '@c:\netware\send.exe "Замените ленту в стриммере" ADMIN /B' '@c:\netware\send.exe "Замените ленту в стриммере" SMENA /B' call RxFuncAdd 'RexxwebLoadFuncs', 'REXXWEB', 'RexxwebLoadFuncs' call RexxwebLoadFuncs server = 'ip адрес моего почтового сервера' sender = 'control@mydomain.ru' recipient = 'control@mydomain.ru' subject = 'Замените ленту' message = DATE() || " - " || TIME() || ' Замените ленту в стриммере !' rc = sendsmtp(server, sender, recipient, subject, 'message','','P') end ret = RxFuncDrop('BaiiCheckReady') exit -----
Библиотеку RXWEB можно найти на hobbes. Функция BaiiCheckReady возвращает "NOT READY", если идет запись на ленту. Но у меня эти два процесса не пересекаются во времени. Если в рабочее время нет сообщений, посылаемых этим скриптом, то лента не выехала, что означает "копирование не выполнено". Это случалось пару раз из-за плохих лент.
Роман Попов
Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ