Обсуждение:Пример резервного копирования баз данных без использования дорогостоящих аппаратных средств или специализированного ПО
0 (0)
Обсуждение:Пример резервного копирования баз данных без использования дорогостоящих аппаратных средств или специализированного ПО ( Обсуждение примера 31.07.2002 18:54 )
5(1)Высылаю свою наработку, которая многим может быть полезна, т.к. зачастую администраторы обходятся минимумом аппаратных средств, а некоторые не заботятся о приобретении средств резервного копирования. Собственно макрос этот запускает arj, который ежедневно (по команде Windows at) пакует базу данных и кладет ее на второй сервер. Проблема бы яйца выеденного не стоила, если бы arj мог бы задавать префикс создаваемого архива текущей датой. По-моему, это может делать только zip for unix.
Архиватор запускается (как и архивы создаются), ессесно, на другом компьютере, следуя одной из аксиом о резервном копировании. В моем случае он запускается на WinNT-сервере, который же является и AppServer''''ом. На нем расположены каталоги ..\obj, ..\mac, ..\dialog. Каталоги ..\Dbfile и ..\txtfile лежат на сервере Novell. Процесс простой: RSL высчитывает системную дату, оборачивает ее в формат yyyymmdd (что бы потом нужный день легче было искать) запускает из-под себя arj...... вот собственно и все..... на выходе получаем полностью упакованный ..\Dbfile например, в виде 20020731.arj
Просто, ясно и дешево; облегчает жизнь. К тому же при падении первого сервера позволяет поднять систему на втором (напомню ..\obj, ..\mac и ..\dialog там уже есть) буквально за 10 минут.
Посмотреть пример
>> ОтветитьОб архивировании открытых файлов ( Головин Леонид 31.07.2002 19:24 )
0(0)Стоит обратить внимание, что пользоваться таким вариантом "резервного копирования" может быть "чревато боком".
Да, ARJ умеет упаковывать открытые файлы. И это хорошо. Но! Если архиватор будет работать по базе данных, в которой выполняются операции, то распакованная база данных будет с высокой вероятностью иметь нарушения логической целостности. И это плохо.
Поэтому, как минимум перед резервным копированием надо:
- выгонять пользователей из RS-Bank
- завершать все пакетные процедуры
- и в идеале гасить Pervasive.
- а после этого можно запускать приведенный батничек.
>> Ответитьarj ( Tiv 01.08.2002 01:20 )
0(0)у arj есть опции: h#, h#1 и h#2
Я предпочитаю -h#
А если база под Новелом, то лучше в кроне прописать анлоад бтрив (или Первасайв), лоад нвзип, лоад бтрив (первасайв)
Взять нвзип можно на http://www.nwsoft.ru/programs/nwzip/download/
>> ОтветитьЕссесно, пример подан как недорогой и сердитый ( Игорь Исаев R-Style Don. Ростов-на-Дону 01.08.2002 17:39 )
0(0)Ессесно, пример подан, как недорогой и сердитый. Ессесно, архивация делается по ночам. Ессесно, основной BackUp у нас - ленточка, которая за ночь делает полные дампы всех серваков. И все же с arch.bat+arch.mac я сплю спокойно, чего и вам желаю.
>> ОтветитьЛенточка значит :) ( Tiv 01.08.2002 22:00 )
0(0)Мелковаты у вас серваки. Если за ночь успевают на ленту сброситься.
Не флейма ради, так, к слову.
>> Ответитьhp surestore ultrium 230 ( Игорь Исаев R-Style Don. Ростов-на-Дону 02.08.2002 11:02 )
0(0)объем данных: 100 ГБ или 200 ГБ
(в зависимости от картриджа)
производительность: 30 МБ/сек (108 ГБ/час)
>> Ответить
попробовал ключ -h# ( Игорь Исаев R-Style Don. Ростов-на-Дону 02.08.2002 15:51 )
0(0)получилась какая-то билеберда base102080.arj.
по-моему 20020801.arj все же понятней, год, месяц, день
>> Ответитьarj -h# ( Tiv 02.08.2002 16:32 )
0(0)Точно, фигня вышла. Должно было быть base020801.arj
Флаг h# добавляет date string to name.
У меня в виде ггммдд
>> ОтветитьА вот такую штуку кто-нить юзал? Она вроде умеет старые архивы удалять, у меня-то ручками... ( Игорь Исаев R-Style Don. Ростов-на-Дону 05.08.2002 13:27 )
0(0)Программа BackUp 32 предназначена для резервирования данных с использованием сжатия, совместимым с PKZIP, WINZIP и другими совместимыми с ними программами - архиваторами, а так же с возможностью подключения внешних модулей сжатия;
В программе доступны следующие действия и опции:
Возможность работы программы в фоновом режиме с помещением иконки в системный трей или без нее.
Возможность подключения плагинов (DLL);
Возможность оповещения пользователей через сеть о предстоящей архивации (необходима программа NetMsg, которую можно загрузить отдельно с http://backup32.virtualave.net
Поддержка архивации на сменный носитель;
Поддержка инкрементной архивации нескольких типов;
Возможность установки пароля на архив;
Присвоение архиву имени в виде текущей даты, определенного пользователем или комбинация того и другого;
Создание BAK – файлов;
Поддержка нескольких конфигураций и групп конфигураций;
Удаление архивов и сопутствующих им файлов (LOG, BAK) старше заданного количества дней или если число архивов превысило заданное количество;
Выполнение конфигурации один раз в заданное количество дней;
Временная деактивация отдельных конфигураций;
Выполнение команды ОС до начала всех операций и после;
Копирование созданного архива в указанную директорию локально или в сеть;
Множество опций, влияющих на конечный архив, таких, как сохранение в архиве информации о директориях, дисках, использование атрибута "Архивный", установка пароля на архив, добавление комментария к архиву, и т.д.;
Запись ЛОГ - файлов для каждого создаваемого архива (сохраняется в директории создания и копирования с именем архива и расширением LOG) а также глобального лога, в котором коротко описываются имя пользователя, дата, конфигурация, архив и результат выполнения данной конфигурации;
Гибкая настройка в плане добавляемых в архив файлов (включаемые, исключаемые, применение масок файлов, файлы, не подлежащие сжатию);
Поддержка командной строки (для автоматизации действий, например для использования с программой запуска по расписанию или создания ярлыков, загружающих и запускающих разные группы и отдельные конфигурации);
Создание ярлыков на конфигурации и группы непосредственно из главного окна
(c) 1999 - 2001 Copyright by Vadim V Mostovoi
>> Ответить
Эх совсем народ асм не знает :) ( senevg 12.03.2003 18:30 )
0(0)@echo off
dd.com
set DD=%ERRORLEVEL%
echo %DD%
точно так же определяем месяц и год файлы нужные тут http://dadgoff.narod.ru/utils/date.arj
>> ОтветитьС небольшой доработкой, пожалуй - лучший вариант ( Terapevt 30.03.2004 09:10 )
0(0)@echo off @rem ********** Определяем дату ********** @dd.com @set DD=%ERRORLEVEL% @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%DD%) set DD=0%DD% @mm.com @set MM=%ERRORLEVEL% @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%MM%) set MM=0%MM% @yy.com @set YY=%ERRORLEVEL% @for %%f in (0,1,2,3,4,5,6,7,8,9) do if (%%f) == (%YY%) set YY=0%YY% @rem ************************************* @echo %YY%%MM%%DD%
>> ОтветитьА эти замечательные сом-файлы под старым досом работают?? ( Zigg 30.03.2004 17:50 )
0(0)а то попробовал, а еррорлевел почему-то ничего не возвращает:-(((
>> ОтветитьCOM-файлы работают, а вот переменная %ERRORLEVEL% в старом DOS'е отсутствует. Тогда всёравно можно ( Terapevt 30.03.2004 18:53 )
0(0)применить изврат типа:
@echo off @rem ********** Определяем дату ********** @dd.com @if errorlevel == 1 set DD=01 @if errorlevel == 2 set DD=02 @if errorlevel == 3 set DD=03 @if errorlevel == 4 set DD=04 @if errorlevel == 5 set DD=05 @if errorlevel == 6 set DD=06 @if errorlevel == 7 set DD=07 @if errorlevel == 8 set DD=08 @if errorlevel == 9 set DD=09 @if errorlevel == 10 set DD=10 @if errorlevel == 11 set DD=11 @if errorlevel == 12 set DD=12 @if errorlevel == 13 set DD=13 @if errorlevel == 14 set DD=14 @if errorlevel == 15 set DD=15 @if errorlevel == 16 set DD=16 @if errorlevel == 17 set DD=17 @if errorlevel == 18 set DD=18 @if errorlevel == 19 set DD=19 @if errorlevel == 20 set DD=20 @if errorlevel == 21 set DD=21 @if errorlevel == 22 set DD=22 @if errorlevel == 23 set DD=23 @if errorlevel == 24 set DD=24 @if errorlevel == 25 set DD=25 @if errorlevel == 26 set DD=26 @if errorlevel == 27 set DD=27 @if errorlevel == 28 set DD=28 @if errorlevel == 29 set DD=29 @if errorlevel == 30 set DD=30 @if errorlevel == 31 set DD=31 @mm.com @if errorlevel == 1 set MM=01 @if errorlevel == 2 set MM=02 @if errorlevel == 3 set MM=03 @if errorlevel == 4 set MM=04 @if errorlevel == 5 set MM=05 @if errorlevel == 6 set MM=06 @if errorlevel == 7 set MM=07 @if errorlevel == 8 set MM=08 @if errorlevel == 9 set MM=09 @if errorlevel == 10 set MM=10 @if errorlevel == 11 set MM=11 @if errorlevel == 12 set MM=12 @yy.com @if errorlevel == 0 set YY=00 @if errorlevel == 1 set YY=01 @if errorlevel == 2 set YY=02 @if errorlevel == 3 set YY=03 @if errorlevel == 4 set YY=04 @if errorlevel == 5 set YY=05 @if errorlevel == 6 set YY=06 @if errorlevel == 7 set YY=07 @if errorlevel == 8 set YY=08 @if errorlevel == 9 set YY=09 @if errorlevel == 10 set YY=10 @if errorlevel == 11 set YY=11 @if errorlevel == 12 set YY=12 @if errorlevel == 13 set YY=13 @if errorlevel == 14 set YY=14 @if errorlevel == 15 set YY=15 @if errorlevel == 16 set YY=16 @if errorlevel == 17 set YY=17 @if errorlevel == 18 set YY=18 @if errorlevel == 19 set YY=19 @if errorlevel == 20 set YY=20 @if errorlevel == 21 set YY=21 @if errorlevel == 22 set YY=22 @if errorlevel == 23 set YY=23 @if errorlevel == 24 set YY=24 @if errorlevel == 25 set YY=25 @if errorlevel == 26 set YY=26 @if errorlevel == 27 set YY=27 @if errorlevel == 28 set YY=28 @if errorlevel == 29 set YY=29 @if errorlevel == 30 set YY=30 @if errorlevel == 31 set YY=31 @if errorlevel == 32 set YY=32 @if errorlevel == 33 set YY=33 @if errorlevel == 34 set YY=34 @if errorlevel == 35 set YY=35 @if errorlevel == 36 set YY=36 @if errorlevel == 37 set YY=37 @if errorlevel == 38 set YY=38 @if errorlevel == 39 set YY=39 @if errorlevel == 40 set YY=40 @if errorlevel == 41 set YY=41 @if errorlevel == 42 set YY=42 @if errorlevel == 43 set YY=43 @if errorlevel == 44 set YY=44 @if errorlevel == 45 set YY=45 @if errorlevel == 46 set YY=46 @if errorlevel == 47 set YY=47 @if errorlevel == 48 set YY=48 @if errorlevel == 49 set YY=49 @if errorlevel == 50 set YY=50 @if errorlevel == 51 set YY=51 @if errorlevel == 52 set YY=52 @if errorlevel == 53 set YY=53 @if errorlevel == 54 set YY=54 @if errorlevel == 55 set YY=55 @if errorlevel == 56 set YY=56 @if errorlevel == 57 set YY=57 @if errorlevel == 58 set YY=58 @if errorlevel == 59 set YY=59 @if errorlevel == 60 set YY=60 @if errorlevel == 61 set YY=61 @if errorlevel == 62 set YY=62 @if errorlevel == 63 set YY=63 @if errorlevel == 64 set YY=64 @if errorlevel == 65 set YY=65 @if errorlevel == 66 set YY=66 @if errorlevel == 67 set YY=67 @if errorlevel == 68 set YY=68 @if errorlevel == 69 set YY=69 @if errorlevel == 70 set YY=70 @if errorlevel == 71 set YY=71 @if errorlevel == 72 set YY=72 @if errorlevel == 73 set YY=73 @if errorlevel == 74 set YY=74 @if errorlevel == 75 set YY=75 @if errorlevel == 76 set YY=76 @if errorlevel == 77 set YY=77 @if errorlevel == 78 set YY=78 @if errorlevel == 79 set YY=79 @if errorlevel == 80 set YY=80 @if errorlevel == 81 set YY=81 @if errorlevel == 82 set YY=82 @if errorlevel == 83 set YY=83 @if errorlevel == 84 set YY=84 @if errorlevel == 85 set YY=85 @if errorlevel == 86 set YY=86 @if errorlevel == 87 set YY=87 @if errorlevel == 88 set YY=88 @if errorlevel == 89 set YY=89 @if errorlevel == 90 set YY=90 @if errorlevel == 91 set YY=91 @if errorlevel == 92 set YY=92 @if errorlevel == 93 set YY=93 @if errorlevel == 94 set YY=94 @if errorlevel == 95 set YY=95 @if errorlevel == 96 set YY=96 @if errorlevel == 97 set YY=97 @if errorlevel == 98 set YY=98 @if errorlevel == 99 set YY=99 @rem ************************************* @echo %YY%%MM%%DD%
ну и не забыть в config.sys установить достаточное пространство для ENVIRONMENT в команде "SHELL="
Такая конструкция будет работать в любом ДОСе-WINDOWSе.
Успехов в изучении ДОСов. ;)
>> ОтветитьО, спасибо, я и забыл, что старом %еррорлевела% не было.. ( Zigg 31.03.2004 09:06 )
0(0)Not specified
>> ОтветитьИ еще один вопрос. ( Zigg 31.03.2004 10:12 )
0(0)При первоначальном выполнении dd.com сначала выскакивет строка "Неправильная команда или имя файла", но все работает. При повторных запусках все срабатывает нормально. А чего она найти не может, не подскажете??
>> ОтветитьНадо удалить знак @ перед словом rem (в BAT-нике их два) (-) ( Terapevt 31.03.2004 11:00 )
0(0)Not specified
>> ОтветитьНет, с @ не связано, что-то другое(+) ( Zigg 31.03.2004 13:19 )
0(0)У Вас где-нить в autoexecе тайм-зона или время/дата принудительно случаем не выставляются??
>> ОтветитьВсе, разобрался. Надо принудительно тайм-зону выставлять в аутоекзеке. Спасибо ( Zigg 31.03.2004 13:56 )
0(0)Not specified
>> Ответить
Ночное архивирование ( Vales 29.03.2004 14:29 )
0(0)У меня префиксированием занимается SED
командник, делающий архив выглядит так
arj32 a -r \rsarchiv\TMP\lstarch.arj \rsbank\dbfile\*.* \rsbank\arhfile\*.* c:\rsbank\prevfile\*.* c:\rsbank\mac\*.* -x*.arj @if not exist \rsarchiv\TMP\lstarch.arj goto fin date /T|sed "s/[^ ]*[ ]//; s/200/0/;s/\.//g;s/^/ren \\rsarchiv\\TMP\\lstarch.arj rs/;s/ $/.*/">_ar_.cmd call _ar_.cmd ::cleenup del _ar_.cmd copy /b \rsarchiv\TMP\rs??????.arj \\srvr-i\rsarch copy /b \rsarchiv\TMP\rs??????.arj \\srvr-ii\rsarch MOVE \rsarchiv\TMP\rs??????.arj \rsarchiv :fin
Запускается ночью по расписанию.
>> Ответитьчто есть sed? это утилита или команда? ( S_Andrey 31.03.2004 15:49 )
0(0)Not specified
>> Ответитьsed - утилита ( Vales 31.03.2004 16:32 )
0(0)Sed.exe - утилита : потоковый редактор.
Глотает, что ему скормят, перерабатывает как ему скажут и "выплевывает" что просили. :)
Используются регулярные выражения.
Найти можно в ИНЕТе под любую платформу.
>> Ответитьвы бы еще перл посоветовали ( KaMPiLeR 31.03.2004 16:34 )
0(0)ну а раз пошла такая пьянка - рекомендую:
http://www.nncron.ru/
и вообще почитать там что связано с бакупами
Крошечный, но полнофункциональный планировщик. Вобрал в себя все лучшее из известного UNIX-планировщика cron. Не требователен к ресурсам компьютера, будет работать даже на очень слабых машинах, не оказывая отрицательного влияния на производительность
>> Ответить
я делаю так(+) ( артем 25.05.2004 08:59 )
2(1)c:\progra~1\winrar\rar.exe a -r -rr -u -y -ag -dh -ri15 -ilog -hpParol z:\storage1\photos.pro\photos k:\photos.pro\*.*
перед архивацией запускаю deltmp и грохаю старые архивы.
>> ОтветитьФормирование префикса VBscript -ом ( Vales 27.05.2004 12:29 )
0(0)Все это умеет VBscript
Пример RSBackup.vbs
-----------
on error Resume next
set wsh = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
arname=date()
arname="RS" & left(arname,2) & mid(arname,4,2) & right(arname,2) & ".arj"
fnm="\rsarchiv\" & arname
'Что архивировать
toArc=" \rsbank\dbfile\*.* \rsbank\arhfile\*.* \rsbank\prevfile\*.* \rsbank\mac\*.* -x*.arj"
'Если уже есть такой, удаляем т.е. обновляем
if fs.FileExists(fnm) then fs.deleteFile fnm
wsh.run "\bin\arj32 a -r " & fnm & toArc ,0 , true
'Проверяем что архив создан и что другой сервер доступен и копируем
if fs.FileExists(fnm) then if fs.FolderExists("\\backsrv\rsarchiv\") then fs.CopyFile fnm, "\\backsrv\rsarchiv\"
set fs = Nothing
set Wsh = Nothing
------------
Запускается ночью шедулером.
Создает архив вида RSddmmyy.arj в папке \rsarchiv и его копию на другом сервере \\backsrv\rsarchiv\RSddmmyy.arj
Вариации возможны по своему усмотрению.
>> Ответить