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

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

В нашем распоряжении имеются 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

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

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

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

Рассмотрим детально написанный выше код. Команда 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, а не архивируя каталог с базой целиком.

1chcp 1251
2@echo off
3setlocal
4set kat=C:\Program Files
5set ver=1cv81
6set base= E:\Базы\База 1С8.1
7"%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
8echo %date% >> backup.log
9endlocal

Параметр 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. В него будут записывать результаты выгрузки базы:

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

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

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

 1chcp 1251
 2echo off
 3setlocal
 4set kat=C:\Program Files
 5set ver=1cv82
 6set serv=SRV3
 7set base=FirmaBuh
 8"%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
 9echo %date% >> backup.log
10endlocal

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

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

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

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

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

Дополнительные материалы: 1С:Предприятие 8 - обновление информационных баз в пакетном режиме.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал