Как сделать бэкап базы данных программы автоматически

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Drugojandrew
Сообщения: 7
Зарегистрирован: 31 май 2015, 14:51

Добрый день.
Нужно решить одну проблему. Есть финансовая программа для контроля правильного движения средств. Написана в США, авторов не знаю. Мне нужно делать каждый день бэкап данных, желательно ночью, когда никто в ней не работает. Программа стоит на Виндовс сервер 2003. Сама программа тоже является сервером. Ее работа отображается в виде консоли.
Сейчас резервное копирование делается таким образом:
1. Завершите работу консоли сервера, введя команду shutdown и затем Enter.
2. Если с сервером в настоящее время соединен хоть один пользователь, то вам потребуется ввести подтверждение того, чтобы отключить его. Если вы хотите отключить, то введите слово yes и затем Enter. Через некоторое время работа консоли прекратиться, после чего курсор перейдет в строку командной строки или совсем выйдет из окна командной строки.
3. Условно: если командная строка закрылась, то откройте ее заново, нажав Win+R, и в появившемся окне введите cmd и затем Enter.
4. В командной строке введите команду для резервного копирования (дату и время вводить в указанном формате): backdbcd ггггммдд чч:мм (например, backdbcd 20130907 21:30). Начнется резервное копирование.
Все это делается вручную. Получается если я делаю бэкап днем, то я отключаю пользователей, которые в ней работают и они теряют не сохраненные данные. Предупредить всех об остановке программы нереально - много народу в ней может быть. Если делать в не рабочее время, то мне приходиться очень рано приходить или очень поздно уходить - для меня это проблематично.
Поэтому хочется, чтобы это делалось автоматически, скажем в 3 часа ночи.
Помогите, пожалуйста, решить эту задачу. Сам я чайник в программировании, поэтому просьба писать подробнее.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Желательно знать тип БД. Если это что-то SQL-подобное, то бекап можно сделать средствами самого SQL-сервера. Иначе писать скрипт (батник) для запуска резервного копирования. Если БД организована на базе файловой системы, то можно делать бэкап своей программой, блокируя файлы для записи и копируя в архив в определенную папку. Для тех данных, что дали вы, наиболее предпочтительный способ - батник
It's a long way to the top if you wanna rock'n'roll
Drugojandrew
Сообщения: 7
Зарегистрирован: 31 май 2015, 14:51

Попытаюсь выяснить как написана эта программа. А можете написать батник? Я совсем пока не представляю как это сделать чтобы завершить стандартно программу и затем сделать бэкап.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Ну ты б дал сначала свою команду резервного копирования.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Drugojandrew
Сообщения: 7
Зарегистрирован: 31 май 2015, 14:51

Сионист писал(а):Ну ты б дал сначала свою команду резервного копирования.
Задача собственно состоит в том, чтобы через консоль завершить выполнение программы. Программа на виртуальном сервере. Команда пишется в консоли программы. Чтобы завершить нужно дать команду "shutdown", а за тем подтвердить - ввести "yes". Сам бэкап сделать довольно просто, проблема именно в завершении. Принудительно завершать нельзя, только через команду. Как при закрытом рабочем столе вести команду в консоль?
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

А рабочий стол то здесь зачем? shutdown пишется прямо в консоль, заранее вешаешь скрипт на планировщик и он будет завершать. Но если делать только закрытие, то Вам ведь всё равно придётся сидеть на работе, чтоб вручную ввести команду для бекапа, поэтому задачу надо решить целиком.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Drugojandrew
Сообщения: 7
Зарегистрирован: 31 май 2015, 14:51

Сионист писал(а): заранее вешаешь скрипт на планировщик и он будет завершать.
Вопрос в том как написать этот скрипт. Я этого не знаю. Можете подсказать что это может быть за скрипт?
Сионист писал(а):Но если делать только закрытие, то Вам ведь всё равно придётся сидеть на работе, чтоб вручную ввести команду для бекапа, поэтому задачу надо решить целиком
эта часть задачи решена - бекап запускаю через батник в планировщике.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

Ну вот смотрите: открываете системную Вы командную строку и набираете. Что? Просто shutdown? Это выключение самой машины. Предположим, набрать надо

Код: Выделить всё

c:\program files\Command Shutdown
. Тогда эту же строчку можно набрать и в скрипт. Или обычно Вы юзали командную строку самой программы? Тогда я не подскажу, надо переделать для системной.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Drugojandrew
Сообщения: 7
Зарегистрирован: 31 май 2015, 14:51

Сионист писал(а):Или обычно Вы юзали командную строку самой программы?
Да, команду надо вводить в консоль самой программы.
Аватара пользователя
Сионист
Сообщения: 1211
Зарегистрирован: 31 мар 2014, 06:18

В скрипт надо написать команду, переделанную так, что её надо вводить в командную строку системы.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить