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

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

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

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

31 май 2015, 14:52

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

01 июн 2015, 10:08

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

01 июн 2015, 10:40

Попытаюсь выяснить как написана эта программа. А можете написать батник? Я совсем пока не представляю как это сделать чтобы завершить стандартно программу и затем сделать бэкап.
Алексей Бачериков
Сообщения: 0
Зарегистрирован: 03 авг 2015, 14:45

03 авг 2015, 14:50

Создаём программы на любой вкус по недорогой цене, любого уровня на сайте http://zakazprogi.usluga.me/
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

19 авг 2015, 13:12

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

21 авг 2015, 15:23

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

21 авг 2015, 18:31

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

22 авг 2015, 16:00

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

22 авг 2015, 16:13

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

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

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

22 авг 2015, 16:18

Сионист писал(а):Или обычно Вы юзали командную строку самой программы?
Да, команду надо вводить в консоль самой программы.
Ответить