Утилита резервного копирования БД Interbase/Firebird

Комментарии

27 комментария(ев)
аватар: fullzero
fullzero
Дата: СБ, 08/09/2012 - 15:57
Звание: Энтузиаст
Сообщений: 118

А 7 zip? А то rar всетаки платный... Smile Есть вариант переделать?

аватар: Nik RON
Nik RON
Дата: СБ, 08/09/2012 - 21:49
Звание: Советник
Сообщений: 663

Можно и переделать.. там весь вопрос только в командной строке, которая используется для архивации..

аватар: Va-Bank
Va-Bank
Дата: СБ, 08/09/2012 - 16:11
Звание: Гуру
Сообщений: 8234

Цитировать

C:\Windows\Temp

А почему именно этот каталог? У меня например системные переменные TMP и TEMP настроены на C:\Temp.

аватар: Nik RON
Nik RON
Дата: СБ, 08/09/2012 - 21:50
Звание: Советник
Сообщений: 663

Я не брал системные переменные.. просто идёт проверка наличия каталога "C:\Windows\Temp" - если его не существует, то используется каталог, в котором располагается сама программа..

аватар: angryvitum
angryvitum
Дата: СБ, 08/09/2012 - 17:49
Звание: Посвященный
Сообщений: 551

Два вопроса:

1. Это GUI front-end для nbackup?
2. Если используется свой алгоритм создания резервной копии, то что произойдет, когда при создании резервной копии база перейдет в другое состояние (завершатся 1 или несколько транзакций)?

Использовать внешнюю программу-архиватор не совсем верно (программа должна быть самодостаточной), ИМХО; в Delphi XE уже есть класс для работы с zip-архивами, ну а zlib поддерживается с незапятных времен.

аватар: Nik RON
Nik RON
Дата: СБ, 08/09/2012 - 21:54
Звание: Советник
Сообщений: 663

1. Нет, это не GUI front-end для nbackup
2. В программе используется штатный компонент IBBackupService, который подключается к серверу Firebird, установленному на компьютере и резервная копия выполняется штатными средствами СУБД Firebird - поэтому проблем при создании резервной копии не будет.

По поводу использования внешнего архиватора соглашусь - просто сработала обычная лень Smile

аватар: Nik RON
Nik RON
Дата: СБ, 08/09/2012 - 22:17
Звание: Советник
Сообщений: 663

Всем - предлагаю критически проанализировать утилиту и выработать идеи по её модернизаци, а результаты работы выложим для общего пользования.

аватар: Va-Bank
Va-Bank
Дата: Пнд, 10/09/2012 - 14:52
Звание: Гуру
Сообщений: 8234

Насколько я помню ты программируешь на лазарусе еще. Напиши демон для Debian для резервного копирования баз данных, и не одной, а чтобы можно было список баз создавать и архивировать их, например в tar Wink
Можно конечно настроить через планировщик cron бекап баз, есть же стандартные утилиты у фаерберда Smile Но не хочется. А так если бы еще GUI через WEB-морду бекапить Smile

аватар: Seregka
Seregka
Дата: Втр, 11/09/2012 - 17:26
Звание: Наблюдатель
Сообщений: 4

1. Так же не помешает уведомление на почту присылать, о том выполнилось резервное копирование или нет (с указанием ошибок).
2. Так же реализовать возможность, когда сервер Interbase/Firebird и программа для резервного копирования находятся физически на разных серверах.

аватар: Valart
Valart
Дата: Втр, 11/09/2012 - 18:09
Звание: Наблюдатель
Сообщений: 56

А стандартный gbak чем не угодил?

аватар: Nik RON
Nik RON
Дата: Втр, 11/09/2012 - 18:19
Звание: Советник
Сообщений: 663

напрягает BAT-ники редактировать ))

аватар: Valart
Valart
Дата: Втр, 11/09/2012 - 19:01
Звание: Наблюдатель
Сообщений: 56

А его нужно, как и программу, один раз нормально написать и всё...
Вот, например:

@echo off

rem FixBase script for FireBird bases
rem Version 0.4 by theMIROn
echo FixBase script for FireBird bases 0.4

set fb_dir=%ProgramFiles%\FireBird\
set fb_user=sysdba
set fb_pass=masterkey
set gfix_name=gfix.exe
set gbak_name=gbak.exe
set dtbase_ext=GDB
set backup_ext=GBK
set dfixed_ext=TMP

echo Searching for FireBird utilites in %fb_dir%
for /r "%fb_dir%" %%I in (%gfix_name%) do if exist %%I set gfix=%%~I
for /r "%fb_dir%" %%I in (%gbak_name%) do if exist %%I set gbak=%%~I
if "%gfix%"=="" echo Error: %gfix_name% not found
if "%gbak%"=="" echo Error: %gbak_name% not found
if "%gfix%"=="" goto :eof
if "%gfix%"=="" goto :eof

echo Searching for bases in %~dp0
for %%I in (*.%dtbase_ext%) do call :recovery %%~dpnI
echo Fix finished.
goto :eof

:recovery
set src=%1.%dtbase_ext%
set bak=%1.%backup_ext%
set dst=%1.%dfixed_ext%

echo Fix %src%...

if not exist %dst% goto step1
del %dst%
if exist %dst% goto :eof

:step1
if not exist %dst% goto step2
del %bak%
if exist %bak% goto :eof

:step2
echo - shutting base
"%gfix%" -shut -force 0 %src% -user %fb_user% -pass %fb_pass%
echo - preparing to backup
"%gfix%" -mend -ignore %src% -user %fb_user% -pass %fb_pass%
echo - backuping to %bak%
"%gbak%" -b %src% %bak% -user %fb_user% -pass %fb_pass%
echo - restoring to %dst%
"%gbak%" -r -rep %bak% %dst% -user %fb_user% -pass %fb_pass%
echo - connecting base
"%gfix%" -online %src% -user %fb_user% -pass %fb_pass%
if not exist %dst% goto :eof
echo - recreating %src%
copy %dst% %src%
del %dst%

К тому же bat-ник можно по месту отредактировать, а exe-шник проблематично. Smile

аватар: Nik RON
Nik RON
Дата: Втр, 11/09/2012 - 20:55
Звание: Советник
Сообщений: 663

эммм.. а теперь можно расшифровку каждого символа, чтобы понимать что написано? Smile
к тому же тут не вижу чего-то архивации резервной копии, а у меня на одном из серверов бэкап 1,5 гига занимает.. а "редактирование" exe-шника достигается точно таким же редактированием настроек, которыми ты свой bat-ник будешь править..

и уж если bat-ники ещё в DOS'е придумали - зачем тогда Windows вообще нужна? Wink

аватар: Valart
Valart
Дата: Втр, 11/09/2012 - 22:29
Звание: Наблюдатель
Сообщений: 56

эммм... как-то я растерялся... что тут расшифровывать? если не понимаешь bat-ник, то повышай свою компьютерную грамотность. архивация резервной копии добавляется одной строкой.
DOS - это ОС, bat-ник - это тип файла. Где связь? Во времена DOS много чего придумали от всего отказываться? Smile Не нравится расширение *.bat, можно использовать *.cmd. Это ж скрипты, куда от них деваться?

аватар: Nik RON
Nik RON
Дата: СР, 12/09/2012 - 02:06
Звание: Советник
Сообщений: 663

лично мне не нравится использование bat-ников - по этой причине я не пытаюсь "повышать компьютерную грамотность" в этом направлении.. довелось мне и эникейщиком поработать, и полаборантствовать во времена Windows 95-98.. но становиться админом у меня никакого желания нет - программистом быть куда интереснее..

а по поводу твоего "Во времена DOS много чего придумали от всего отказываться?":
Был у меня начальник на первой работе. Он всё время тормозил мои задумки по написанию программ новых.. Говорил "Зачем придумывать новое? Надо использовать старое".. далеко только на старом не уедешь.. не советую тебе на такой позиции стоять... устареешь..Wink

аватар: Valart
Valart
Дата: ЧТ, 13/09/2012 - 07:31
Звание: Наблюдатель
Сообщений: 56

По поводу админства полностью с тобой согласен. Мне тоже интереснее создавать своё, чем настраивать чужое. Smile Но всё-таки bat-ники тут ни при чём.
А на счёт начальника и " далеко только на старом не уедешь", по-моему, очень показателен пример Linux. Т.е. когда каждый пытается придумать что-то своё "новое"! В результате "старое" так и не доводится до ума, а "новое" в скором времени в свою очередь становится старым и т.д. Может быть начальник и был в чём-то прав. В частности в том, что не стоит под каждую мелкую (крупную) задачу писать что-то своё (хотя, понятно, что тебе это интереснее), а вначале поискать готовые решения, которых, скорее всего, будет не мало. В результате очень экономится время.

аватар: Nik RON
Nik RON
Дата: ЧТ, 13/09/2012 - 15:54
Звание: Советник
Сообщений: 663

Цитировать

В частности в том, что не стоит под каждую мелкую (крупную) задачу писать что-то своё (хотя, понятно, что тебе это интереснее), а вначале поискать готовые решения, которых, скорее всего, будет не мало.

В данном случае у нас первоначально резервное копирование было организовано как раз на bat-никах.. когда выяснилось, что на одном из серверов резервное копирование не выполняется, я попытался настроить этот сервер по аналогии с другими.. но криво прописал пути (на каждом сервере Firebird установлен по разному, не оказалось установленного архиватора).. там было три батника, в которые нужно было вносить изменения.. я плюнул на bat-ники.. поискал в инете подобные утилиты, но они обычно делаются для резервного копирования/восстановления баз, а мне только резервное копирование нужно было и чтобы через командную строку работало... учитывая, что ранее я в своих программах встраивал резервное копирование, то вопрос решался в течение 15 минут.. ещё некоторое время потребовалось, что GUI сделать удобным и настроить поведение программы в режиме /auto.. это о времени потраченном )

Цитировать

В частности в том, что не стоит под каждую мелкую (крупную) задачу писать что-то своё (хотя, понятно, что тебе это интереснее), а вначале поискать готовые решения, которых, скорее всего, будет не мало.

ещё разок вернёмся к этой фразе.. возьмём автомобиль начала XX-го века.. он выполняет те же функции, что и новомодный Lexus.. но почему-то народ не очень любит на "старье" ездить..

аватар: Valart
Valart
Дата: ЧТ, 13/09/2012 - 22:37
Звание: Наблюдатель
Сообщений: 56

Смотря какой автомобиль. Многим, вообще-то, нравятся красивые раритетные автомобили. Но программы и автомобили сравнивать не очень корректно. Народ, вон, очень даже "любит ездить" на 1С 7.7, вышедшей в конце 90-х, на Windows XP, вышедшей в 2001-м, а некоторые ещё и на DOS-овских программах до сих пор работают. Кстати, про DOS. Есть специализированное ПО, которое специально пишется под DOS, например UCS R-Keeper.

аватар: Nik RON
Nik RON
Дата: ЧТ, 13/09/2012 - 22:53
Звание: Советник
Сообщений: 663

я не сторонник "раритетов" и не сторонник широкого использования DOS'а в настоящее время.. и как разработчик некоторого количества софта, который применялся в финансовых операциях муниципалитетов, я предпочитаю точно знать как будет вести себя используемое мною ПО, а не надеяться на "авось" и кривые руки других разработчиков..

аватар: Valart
Valart
Дата: ЧТ, 13/09/2012 - 23:58
Звание: Наблюдатель
Сообщений: 56

Цитировать

я предпочитаю точно знать как будет вести себя используемое мною ПО
, ох, тут я с тобой согласен на все 100%!!! Но кривые руки далеко не у всех разработчиков. А использование DOS оправдано низким потреблением ресурсов, защищенностью от внешних воздействий, ну и, плюс узкая специализация ПО (на комне кроме этой программы больше ничего не используется).

аватар: Nik RON
Nik RON
Дата: ПТ, 14/09/2012 - 02:51
Звание: Советник
Сообщений: 663

Цитировать

Но кривые руки далеко не у всех разработчиков

Именно поэтому и появилась утилита.. ))) и если бы она не упрощала настройку резервного копирования, то смысла от неё не было бы.. а в данном случае настройка резервного копирования куда "прозрачнее" стала..

аватар: jimmyjonezz
jimmyjonezz
Дата: ПТ, 14/09/2012 - 00:44
Звание: Мастер
Сообщений: 2469

как обстоят дела с сетевыми путями?

аватар: Nik RON
Nik RON
Дата: ПТ, 14/09/2012 - 02:54
Звание: Советник
Сообщений: 663

Цитировать

как обстоят дела с сетевыми путями?

если ты про мою утилиту, то само резервное копирование выполняется локально (ограничения от Firebird), а архивированная копия уже может располагаться где угодно в сети..

аватар: delphi5858
delphi5858
Дата: СР, 15/02/2017 - 16:19
Звание: Наблюдатель
Сообщений: 2

Добрый день а есть у вас Утилита восстановление БД Interbase/Firebird исходник на delphi если есть можно взять у вас или тут выложите на форуме если можно на почту прислать архивам eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%62%65%73%74%6b%69%6c%6c%69%40%6d%61%69%6c%2e%72%75%22%3e%62%65%73%74%6b%69%6c%6c%69%40%6d%61%69%6c%2e%72%75%3c%2f%61%3e%27%29%3b')) спасибо.

аватар: Va-Bank
Va-Bank
Дата: ЧТ, 16/02/2017 - 05:24
Звание: Гуру
Сообщений: 8234

Такого исходника нет. И прошу прощения за нескромный вопрос, куда делись запятые? )))))

аватар: jimmyjonezz
jimmyjonezz
Дата: ЧТ, 23/02/2017 - 00:43
Звание: Мастер
Сообщений: 2469

ясно же куда. убежали! Laughing out loud

аватар: delphi5858
delphi5858
Дата: ПТ, 17/02/2017 - 04:13
Звание: Наблюдатель
Сообщений: 2

извиняюсь:)