Firebird удаленное резервное копирование
Я хочу сделать резервную копию базы данных Firebird. Я использую утилиту gbak.exe. Работает нормально.
Но когда я хочу сделать резервную копию с удаленного компьютера, файл резервной копии сохраняется в файловой системе serveur. Есть ли способ заставить утилиту gbak загрузить файл резервной копии?
Спасибо
6 ответов
Резервная копия хранится на сервере Firebird
gbak -b -service remote_fb_ip:service_mgr absolute_path_to_db_file absolute_path_to_backupfile -user SYSDBA -pass masterkey
Резервная копия хранится на локальной машине
gbak -b remote_fb_ip:absolute_path_to_db_file path_to_local_file -user SYSDBA -pass masterkey
см.: локальное резервное копирование удаленного сервера и документация gbak
Перенос удаленной базы данных на другой удаленный компьютер всегда является проблемой. Для этого наш институт использует Handy Backup (также для приложений на базе Firebird), но если вы предпочитаете GBAK, это еще несколько способов сделать это.
Самый простой метод - это прямой вызов удаленной базы данных с локального компьютера с использованием GBAK (я вижу, что это уже было описано до меня). Другой метод - установка GBAK на удаленную машину с использованием административных инструментов для сетей Windows. Этот метод может быть сложным, так как в сетях со смешанной архитектурой (с доменными и не доменными участками) всегда существуют некоторые препятствия.
Следовательно, самый простой способ - написать файл сценария резервного копирования (пакетной обработки), вызывающий GBAK, а затем скопировать полученный файл Firebird в другое место назначения в сети, используя сетевой файловый менеджер из командной строки или FTP-менеджер, например FileZilla. Это требует некоторых (минимальных) навыков и исследований, но может успешно работать много раз после успешного тестирования.
С наилучшими пожеланиями!
Я полагаю, что вы сможете это сделать, если для резервного копирования будете использовать диспетчер служб и указать stdout в качестве файла резервной копии. В этом случае файл должен быть передан клиенту gbak, и вы можете записать его на диск с перенаправлением.
gbak -backup -service hostname:service_mgr employee stdout > backupfile.fbk
Однако я не уверен на 100%, работает ли это на самом деле, поскольку в документации gbak об этом не говорится. Я проверю это и исправлю свой ответ позже на этой неделе.
Если у вас есть локальный gbak, вы можете выполнить резервное копирование по сети. Просто укажите имя хоста перед базой данных.
Например:
gbak -B 192.168.0.10:mydatabase mylocalfile.fbk -user SYSDBA -password masterkey
Мой ответ не о резервном копировании, а о восстановлении, но все же может быть кому-то полезен. Если у вас Windows, удаленное сетевое расположение и вы хотите восстановить резервную копию из удаленного файла .fbk в удаленное расположение через локальный компьютер, вы можете использовать этот метод:
- На вашей локальной машине Windows (на которой у вас установлена СУБД) выполните:
mklink /D C:\LinkName \\NetworkLocation\LocationName
напримерmklink /D C:\my_share \\10.11.11.123\Some_share
Таким образом, на вашем местном"C:\"
на диске будет создана символическая ссылкаmy_share
указал на сетевое местоположение.
- На вашем локальном компьютере с Windows выполните
gbak
такая команда:
"C:\Program Files\...\gbak.exe" -c -v -n "\\10.11.11.123\Some_share\...\someBackup.fbk" "C:\my_share\...\someRestore.fdb" -user sysdba -password masterkey
К вашему сведению: в моих примерах адрес10.11.11.123
IP вашего сетевого местоположения.
Попробуйте эту команду:
"C:\Program Files (x86)\Firebird\Firebird_2_5\bin\gbak" -v -t -user SYSDBA -password "masterkey" 192.168.201.10:/database/MyDatabase.fdb E:\Backup\BackupDatabase.fbk
Конечно, вы должны обновить свои пути соответственно:)