Автоматизация резервного копирования баз 1С Предприятие.

Сегодня мы поговорим о такой важной теме, как автоматизация резервного копирования информационных баз 1С Предприятия 7.7, 8.1 и 1С8.2 на платформе Windows Server 2008 SP2.

В нашем распоряжении имеются 3 сервера с различными версиями платформы:

  • SRV1 - с установленной платформой 1С 7.7
  • SRV2 - с установленной платформой 1С 8.1
  • SRV3 - с установленной платформой 1С 8.2

На всех серверах одинаковая разметка дисковой подсистемы:

  • На разделе C:\ имеем установленную систему Windows Server
  • На разделе Е:\ содержатся базы платформ
  • И наконец, на разделе I:\ будут содержаться резервные копии баз.

Автоматизировать резервное копирование мы будем посредством пакетного или по-другому bat-файла, который представляет собой текстовый файл с расширением .bat, в который записываются, а затем исполняются последовательности команд при помощи программы-интерпретатора (cmd.exe).

  • На сервере SRV1 установлен файловый вариант платформы 1С 7.7, расположенный в "E:\Базы\База 1С7.7".
  • На сервере SRV2 установлен файловый вариант платформы 1С 8.1, расположенный в "E:\Базы\База 1С8.1".
  • На сервере SRV3 установлен серверный вариант платформы 1С 8.2, расположенный в "E:\Базы\База 1С8.2". Кластер базы будет иметь название FirmaBuh

Перед нами стоит задача: делать резервные копии указанных выше баз в назначенное время - 1:00 после плановой перезагрузки серверов в 00:00.

Для выполнения поставленной задачи, во-первых создадим на каждом разделе I наших серверов папки с названиями:

  • I:\Архив\База 1С7.7
  • I:\Архив\База 1С8.1
  • I:\Архив\База 1С8.2

После того, как мы создали основные каталоги для наших будущих архивов, приступим к написанию самих bat-ников. В данной статье bat-файлы располагаются в тех же каталогах что и архивы. На SRV1 в директории "I:\Архив\База 1С7.7" создадим файл с названием backup77.bat

 

1c-backup-001.jpg

Не забываем задать расширение .bat. Архивировать базу на SRV1 мы будем с помощью бесплатного архиватора 7-zip, скачать который вы можете на сайте разработчика. Следует отметить, что в приведенном ниже методе происходит архивирование всего каталога с базой.

Откроем созданный нами файл с помощью блокнота. Запишем туда следующее:

chcp 1251
"C:\Program Files\7-Zip\7z.exe" a -t7z "I:\Архив\База 1С7.7\backup77-%date%.7z" -mx3 " E:\Базы\База 1С7.7" -ssw
@echo off
pause

Рассмотрим детально написанный выше код. Команда chcp 1251 задает кодировку cp1251, т.е. все русские названия директорий будут восприниматься интерпретатором правильно (хотя в командной строке при запуске батника вы будете видеть нечитаемые символы).

Далее мы указываем путь к .exe файлу программы 7-zip. Команда а означает добавить данный каталог, а именно I:\Архив\База 1С7.7 в архив "I:\Архив\База 1С7.7\backup77-%date%.7z", формат для которого мы задаем ключом -t7z. Т.е. мы получим архив с названием backup77-%date%.7z и форматом 7z, например: backup77-03.10.2011.7z

Параметр %date%, как вы уже догадались, задает дату на момент запуска архивирования. Ключ -mx3 задает уровень сжатия. В нашем примере он означает быстрое сжатие. На всякий случай здесь приведена команда -ssw. Она позволяет архивировать даже в том случае, если 1с 7.7 будет запущена. Дополнительную справку по всем ключам командной строки вы можете получить в русской документации к программе 7-zip.

Запустив bat-файл, вы сможете пронаблюдать весь процесс архивирования. Если вам это не надо, следует удалить команду pause, а @echo off переместить после команды chcp 1251.

На SRV2 в директории "E:\Базы\База 1С8.1" создадим файл с названием backup81.bat. В отличие от прошлого сервера, на этом архивирование мы будем проводить с помощью выгрузки базы напрямую через 1с 8.1, а не архивируя каталог с базой целиком.

chcp 1251
@echo off
setlocal
set kat=C:\Program Files
set ver=1cv81
set base= E:\Базы\База 1С8.1
"%kat%\%ver%\bin\1cv8.exe" CONFIG /F "%base%" /DisableStartupMessages /DumpIB "I:\Архив\База 1С8.1\1c81_%date%.dt" /N Администратор /P 123 /OUT "I:\Архив\База 1С8.1\backup.log" -NoTruncate
echo %date% >> backup.log
endlocal

Параметр setlocal позволяет нам изменить переменные в пакетном файле. Мы можем обозначить путь вместо длинной строки просто двумя или тремя символами. К примеру, мы задаем путь к 1cv8.exe, при этом не вписываем целиком путь, а вначале просто даем обозначение каталогу, где располагается 1с и папки в которой находится наш exe. Параметр CONFIG запускает 1с 8.1 в режиме "Конфигуратора". После ключа /F указываем каталог с файлами БД, /DisableStartupMessages подавляет стартовые сообщения программы о различных предупреждениях. Для поставленной задачи они нам не нужны. Команда /DumpIB выгружает заданную базу в каталог I:\Архив\База 1С8.1.

Выгруженный файл БД будет иметь вид 1c81_%date%.dt. К примеру: 1c81_03.10.2011.dt

Далее командами /N и /P задаются логин и пароль администратора базы соответственно. Затем происходит выгрузка лог файла параметром /OUT в каталог I:\Архив\База 1С8.1 c именем backup.log. В него будут записывать результаты выгрузки базы:

Выгрузка информационной базы успешно завершена
03.10.2011

Ключ -NoTruncate делает так, что лог файл не очищается каждый раз при запуске bat-ника. Так же в конце батника для удобства мы записываем дату выгрузки базы в лог-файл backup.log.

На SRV3 в директории "E:\Базы\База 1С8.2" создадим файл с названием backup82.bat. Конфиг, представленный ниже почти идентичен предыдущему, за исключением того, что запуск 1с происходит для серверного варианта установки. Соответственно, совпадающие параметры мы не будем описывать.

chcp 1251
echo off
setlocal
set kat=C:\Program Files
set ver=1cv82
set serv=SRV3
set base=FirmaBuh
"%kat%\%ver%\bin\1cv8.exe" CONFIG /S %serv%\%base% /DisableStartupMessages /DumpIB "I:\Архив\База 1С8.2\1c82_%date%.dt" /N Администратор /P 123 /OUT "I:\Архив\База 1С8.2\ backup.log" -NoTruncate
echo %date% >> backup.log
endlocal

Стоит лишь отметить ключ /S после которого указывает адрес сервера 1С:Предприятия 8.2 в формате: Имя_Сервера\Название_Базы. В нашем случае это SRV3\FirmaBuh.

На этом мы окончательно разобрали выгрузку и архивирование баз платформ 1с 7.7, 8.1 и 8.2. Созданные нами bat-файлы можно добавить в любой планировщик. Мы использовали для этого стандартный планировщик заданий Windows.

1c-backup-002.jpg

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

chcp 1251
@echo off
setlocal
set arhiv1="\\SRV1\Архив\ База 1С7.7\ backup77-%date%.7z"
set arhiv2="\\SRV2\Архив\ База 1С8.1\1c81_%date%*.dt"
set arhiv3="\\SRV3\Архив\ База 1С8.2\1c82_%date%*.dt"
set kat1="\\SRV1\Архив\ База 1С7.7\"
set kat2="\\SRV2\Архив\ База 1С8.1\"
set kat3="\\SRV3\Архив\ База 1С8.2\"
set errlog="Лог-файл с ошибками архивирования баз.log"
set viewlog="C:\Users\Admin\Desktop\Ошибки архивирования баз.log"
if not exist %arhiv1% echo Дата: %date% Время: %time% Сервер SRV1 сообщает: в папке %kat1% файлы архива не найдены >> %errlog%
if not exist %arhiv2% echo Дата: %date% Время: %time% Сервер SRV2 сообщает: в папке %kat2% файлы архива не найдены >> %errlog%
if not exist %arhiv3% echo Дата: %date% Время: %time% Сервер SRV3 сообщает: в папке %kat3% файлы архива не найдены >> %errlog%
echo. >> %errlog%
copy %errlog% %viewlog% /a

Bat-файл проверяет наличие файлов архивов на серверах и, если не находит, то записывает лог-файл с ошибками, который создается в том каталоге, в котором он был запущен. Строка copy %errlog% %viewlog% /a копирует лог-файл на рабочий стол Администратора. Таким образом, придя на работу, вы можете, заглянув в Ошибки архивирования баз.log увидеть список отсутствующих архивов. Сам bat-ник можно добавить опять же в планировщик.

Источник: http://interface31.ru/tech_it/2011/10/avtomatizaciya-rezervnogo-kopirova...

Вы можете задать вопрос по статье специалисту.

Мы в курсе новинок и технологий компьютерного рынка.

Помните, что все действия Вы выполняете на свой страх и риск и загрузка неверных данных может повлечь за собой крах системы и потерю информации. Администрация сайта не несет ответственность за Ваши действия.