Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > Как автоматически сделать backup базы


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

Автор: kin 2.6.2015, 16:44
Привет!
Если еще актуально, то, банальный вопрос: что мешает использовать планировщик задач?

Автор: Drugojandrew 3.6.2015, 10:38
Еще актуально.
Через планировщик я смогу запустить только backdbcd (это бат файл), а как остановить сервер я не знаю. Причем это нужно сделать обязательно через команду shutdown и на вопрос об отключении пользователей ответить yes. Остановка через taskkill и т.п. не подходит, т.к. иногда возникают из-за этого сбои. Мне рекомендовали написать батник, но я как-то не въеду как это сделать.

Автор: mihanik 3.6.2015, 15:33
А теневые копии помогут?
Консистентность базы не нарушиться?

Автор: Drugojandrew 3.6.2015, 19:53
Цитата
А теневые копии помогут?
Нет не помогут. Пробую программы типа Ghost но пока безрезультатно - на Ghost ввод с клавы как-то коряво работает. Есть идеи как можно сделать бэкап автоматически?

Автор: dstorm81 4.6.2015, 11:28
Цитата(Drugojandrew @  3.6.2015,  20:53 Найти цитируемый пост)
Нет не помогут

могу предположить что поможет виртуализация сервера с этой программулиной.
предположу что kvm гость в raw формате на lvm блоке отлично сделает снапшот поздно ночью 

Автор: kin 4.6.2015, 17:45
Цитата(Drugojandrew @  31.5.2015,  14:41 Найти цитируемый пост)
Сама программа тоже является сервером. Ее работа отображается в виде консоли. 
Если правильно понял, то под этой фразой подразумевается следующее: есть какой-то процесс, управляемый с командной строки, типа file_process.exe /shutdown и существует только один ключ управления (shutdown), или все же есть еще ключи, но Вам они неизвестны? 
Или в своей работе этот процесс создает собственное консольное окно (по принципу netsh или nslookup) и все команды вводятся в нем?

Автор: Drugojandrew 7.6.2015, 18:42
Цитата(dstorm81 @  4.6.2015,  11:28 Найти цитируемый пост)
могу предположить что поможет виртуализация сервера с этой программулиной.
предположу что kvm гость в raw формате на lvm блоке отлично сделает снапшот поздно ночью  
 Вообще ничего не понял.

Добавлено через 4 минуты и 35 секунд
Цитата(kin @  4.6.2015,  17:45 Найти цитируемый пост)
Если правильно понял, то под этой фразой подразумевается следующее: есть какой-то процесс, управляемый с командной строки, типа file_process.exe /shutdown и существует только один ключ управления (shutdown), или все же есть еще ключи, но Вам они неизвестны? 
Или в своей работе этот процесс создает собственное консольное окно (по принципу netsh или nslookup) и все команды вводятся в нем?
Возможно ключи есть, я не знаю. Есть батник, через который я запускаю прогу и после запуска он создает консольное окно.

Автор: kin 8.6.2015, 08:24
Цитата(Drugojandrew @  7.6.2015,  18:42 Найти цитируемый пост)
...Есть батник, через который я запускаю прогу и после запуска он создает консольное окно.
 Немножко наглый вопрос - можно взглянуть на этот батник?

Автор: dstorm81 8.6.2015, 09:47
Цитата(Drugojandrew @  7.6.2015,  19:42 Найти цитируемый пост)
 Вообще ничего не понял.

предлагаю делать бэкапы не вашей программы.. 
а бэкапы компа ПОЛНОСТЬЮ...

собственно, чтобы осуществить такое, нужно виртуализировать вашу систему:
1) для этого поднять гипервизор (kvm или hiper-v)
2) выйти в выходные и перенести физическую систему в виртуальную.
3)получать profit


Автор: Akina 8.6.2015, 11:22
Собственно задача - эмулировать нажатие клавиатуры в заранее известном окне приложения. Причём что именно слать - хорошо известно. Не вижу проблемы. SendKeys в помощь.
Цитата(Drugojandrew @  31.5.2015,  15:41 Найти цитируемый пост)
Сам я чайник в программировании

А это твои проблемы. Хочешь решить задачу - становись не-чайником. Или нанимай не-чайника, тоже вариант.

Автор: Drugojandrew 10.6.2015, 11:43
Цитата(dstorm81 @  8.6.2015,  09:47 Найти цитируемый пост)
предлагаю делать бэкапы не вашей программы.. 
а бэкапы компа ПОЛНОСТЬЮ...
Это крайний вариант, пока не рассматриваю.

Автор: Drugojandrew 12.6.2015, 18:21
Цитата(Akina @  8.6.2015,  11:22 Найти цитируемый пост)
SendKeys в помощь.
SendKeys в консоли не работает(.

Цитата(Akina @  8.6.2015,  11:22 Найти цитируемый пост)
Собственно задача - эмулировать нажатие клавиатуры в заранее известном окне приложения
С помощью Ghost мне это сделать не удалось - подключаюсь к серверу виртуально - пока окно открыто, все работает; если его закрыть, то ничего не получается - программа-эмулятор запускается, как будто выполняет заданную программу (при открытии сервера видно что она запускалась), но никакого результата.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)