В этой статье я хочу поделиться опытом резервного копирования файловых и SQL баз 1С в локальное, сетевое и облачное (на примере Google Drive) хранилище с помощью Effector Saver.

ПО является платным: 2500?.
Переход на новую версию (с 3 на 4) также является платным: 1250?.

Писал инструкцию для друга, но думаю она пригодиться и кому-то из вас.

И как всегда, в комментариях, вы научите меня чему-то новому =)

В конце инструкции приведен пример журнала, по которому хорошо видна скорость выполнения задачи.

Цель:
Автоматическое создание шифрованных бэкапов по расписанию с отчётом об ошибках на почту.

Логика бэкапов:

  • Ежедневно последние 30 шт (срок хранения 1 месяц)
  • Ежемесячно 1 числа последние 24 шт (срок хранения 2 года)
  • Ежегодно 1 февраля последние 10 шт (срок хранения 10 лет)
  • Бэкапы выгружаются в хранилище бэкапов (локальное или сетевое) из под учётки backup
  • Бэкапы выгружаются в облако Goole Drive (возможно с собственным OAuth ID Client/Secret)
  • Отправка отчета об ошибках на электронную почту

Небольшое пояснение

  • Данная инструкция приводится как готовый пример использования, который можно и нужно адаптировать под свои задачи.
  • Задания могут запускаться в одно время, т.к. поддерживается параллельное выполнение заданий, что ощутимо сокращает время для бэкапов.
  • Дополнительное копирование выполняется на основе задачи, т.е. выполняется копирование последнего уже созданного бэкапа. Например, если дополнительное копирование должно быть выполнено 10 числа, а бэкап выбранной задачи от 10 числа завершился с ошибкой (а мы не стали вмешиваться), то дополнительное копирование сделает копию для последнего успешного бэкапа выбранной задачи, в нашем примере будет от 9 числа.
  • В программе можно настроить выгрузку баз средствами 1С в виде .dt файлов, с автоматической блокировкой/разблокировкой базы и выкидыванием пользователей. В данной инструкции такой способ не рассматривается, как ненадежный способ резервного копирования формата .dt.

1. Установка и настройка
Устанавливаем, запускаем.
— Сервис > Параметры

  • Автозагрузка
    Запускать как служба Windows (сервер)
    пользователь backup, пароль свой

    Пояснения по пользователю backup, для чего отдельная учетка
    Для бэкапов считаю важным создавать и использовать отдельную учетную запись, например backup. Это может быть как локальная так и доменовская учетка.
    Доступ к хранилищу бэкапов для админов должен быть настроен для чтения, и только у учетки backup на запись. Это позволит защитить ваши бэкапы от многих опасностей (дурная голова, вирусы). А если вам понадобится внести какие-то изменения в хранилище бэкапов, то всегда можно дать себе временны доступ, или запустить любой проводник (например Total Commander) от имени учетки backup для полного доступа к хранилищу.

  • Параметры агента
    Разрешить параллельную работу потоковых задач: 5
    Выбираем от мощности сервера и скорости канала интернет (для выгрузки в облако)
    Использовать указанный каталог временных файлов:
    \\NAS\Backup\Temp

    Пояснения по использованию сетевого пути
    Сетевую папку желательно разместить на компьютере с данной программой, т.е. по факту для нас это будет локальная папка (если скорость позволяет, то и любой другой сетевой путь).
    Доступ к папке Temp (каталог временных файлов) должен быть:

    1. для backup на запись
    2. для учетки из под которой работает служба MS SQL Server на запись
    3. админам на чтение

    К сожалению данная программа не сообщает о своей особенности пользователю, когда тот настраивает резервное копирование SQL баз. Она считает что SQL сервер находится на том же компьютере, что и она. Когда создается бэкап SQL базы, то серверу SQL передается путь для временной папки буквально, и SQL сервер выгружает бэкап в свою локальную временную папку. После чего не может найти бэкап в своей временной папке и вываливает ошибку.

    Чтобы обойти это ограничение, мы выбираем сетевой путь для временной папки. Тогда SQL сервер будет получать сетевой путь и будет выгружать бэкап по этому адресу.

    В будущих версиях разработчики обещали подумать над тем, чтобы добавить настройку для задач SQL бэкапов, в которой можно будет прописать сетевой путь для выгрузки, и не менять общий путь к временным папкам.
  • Параметры менеджера
    Устанавливаем пароль, если к программе может получить доступ нежелательный пользователь.
  • Файлы архивов
    Варианты окончания имени архива: yyyy.mm.dd_hh.nn.ss
    Для эстетики и имя без пробелов (старая привычка)
  • Служебные
    OAuth данные приложения в облаке — Обновить данные ClientID / ClientSecret

    Тут вносить изменения не обязательно, но как всегда есть небольшое НО
    Недавно я получил ошибку выгрузки бэкапов в облако из-за превышения лимитов OAuth. Ошибка была только один раз, разработчики устранили эту проблему, но зачем ждать её снова. Я решил получить свой OAuth на Google Диск и забыть об этом.
    Инструкция с картинками, как получить свой Client ID и Secret нашел тут: https://github.com/Cloudbox/Cloudbox/wiki/Google-Drive-API-Client-ID-and-Client-Secret

2. Подготовка
— Сервис > Управление хранилищами > Создать
  • Локальная/сетевая папка:
    Тут все понятно, следуя нашей логике бэкапов (в начале статьи) создаем 3 хранилища для удобства
    \\NAS\Backup\EveryDay
    \\NAS\Backup\EveryMonth
    \\NAS\Backup\EveryYear
  • Google диск:
    Создаем подключение к облаку Google диск.
    Название дадим по нашей логике: EveryDay
    Жмем кнопку Авторизация, вводим логин/пароль, готово.

    Если вы это настраиваете удаленно на сервере или чужом компьютере
    То можно выполнить авторизацию альтернативным способом. Закрываем окно ввода логина и пароля — появится ошибка авторизации — жмем кнопку Пользовательский режим, далее жмем по ссылке Получить код подтверждения ссылка авторизации откроется в браузере. Ссылку копируем к себе на компьютер, авторизуемся у себя на компьютере, подтверждаем права доступа, получаем ключ, копируем его обратно в поле окна Авторизация приложения в пользовательском режиме, жмем ОК

    Выбираем путь к папке в облаке, аналогично:
    Backup/EveryDay

    Дополнительные облачные хранилища для ежемесячных и ежегодных копий делаем через копирование (Создать > Скопировать)
    В итоге получаем 3 облачных хранилища:
    EveryDay (Google Диск)
    EveryMonth (Google Диск)
    EveryYear (Google Диск)
    На этом настройка Управление хранилищами закончена.

3. Создание задач резервного копирования

3.1. Задачи > Добавить задачу > Резервное копирование файлов и баз данных (SQL)
  • Основные параметры
    Включить в архив бэкап базы SQL (на примере Microsoft SQL Server)
  • База Microsoft SQL
    Прописываем все реквизиты.
    Проверяем, что на MS SQL сервере открыт TCP 1433 порт.
    Жмем: Проверить
  • Хранилище архивов
    — Добавляем хранилище \\NAS\Backup\EveryDay
    Автоматически удалять устаревшие резервные копии: 30
    — Добавляем хранилище EveryDay (Google Диск)
    Автоматически удалять устаревшие резервные копии: 30
  • Файл архива
    Имя файла архива: название базы
    Окончание имени архива: yyyy.mm.dd_hh.nn.ss
    Архивирование
    Формат: 7z
    Сжатие: без сжатия

    Почему без сжатия?
    При резервном копировании SQL базы стоит рассмотреть 2 варианта

    1. Сжатие базы средствами SQL сервера. — Быстрый, но сжимает хуже чем 7z.
    Если выбрали этот вариант, то нужно:
    — Выбрать: без сжатия (т.к. сжимать уже сжатый .bak файл без толку)
    — В свойствах MS SQL сервера включить: Параметры базы данных > Сжимать резервные копии.

    2. Сжатие базы средствами 7z — Медленный, но сжимает лучше чем SQL.
    Если выбрали этот вариант, то нужно:
    — Выбрать: максимальное сжатие
    — В свойствах MS SQL сервера отключить: Параметры базы данных > Сжимать резервные копии.

    В SQL бэкапах я использую первый вариант, хоть он и сжимает по хуже, зато выгрузка делается за считанные минуты (а то и секунды). А вот второй вариант может растянуться на часы.

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

    Шифровать архивы
    Шифровать имена файлов
    Устанавливаем пароль (запишите его, если забудете, то бэкапы будет не восстановить)
  • Расписание автозапуска:
    Запускать по расписанию: включить
    Ежедневно 03:00
  • Прервать выполнение задачи через: включить
    2 час. 0 мин.

3.2. Задачи > Добавить задачу > Резервное копирование файлов и баз данных (файл)
  • Основные параметры
    Включить в архив файлы
  • Файлы
    Путь к файлам: Выбираем путь к папке в которой лежат файловые базы 1С, например «D:\Bases»
    Если хотим сделать бэкап всех баз в подкаталогах, выбираем:
    Имена сохраняемых файлов, каталогов...:
    1Cv8.1CD
    Включить подкаталоги (рекурсивно)

    Если хотим сделать бэкап выборочных баз в подкаталогах, выбираем:
    Имена сохраняемых файлов, каталогов...:
    Buh\1Cv8.1CD
    Trade\1Cv8.1CD
  • Хранилище архивов
    — Добавляем хранилище \\NAS\Backup\EveryDay
    Автоматически удалять устаревшие резервные копии: 30
    — Добавляем хранилище EveryDay (Google Диск)
    Автоматически удалять устаревшие резервные копии: 30
  • Файл архива
    Имя файла архива: название базы
    Окончание имени архива: yyyy.mm.dd_hh.nn.ss
    Архивирование
    Формат: 7z
    Сжатие: максимальное
    Шифровать архивы
    Шифровать имена файлов
    Устанавливаем пароль (запишите его, если забудете, то бэкапы будет не восстановить)
  • Расписание автозапуска:
    Запускать по расписанию: включить
    Ежедневно 03:00
  • Прервать выполнение задачи через: включить
    2 час. 0 мин.

Основные задачи ежедневного резервного копирования настроили, переходим к дополнительным

4. Задачи > Добавить задачу > Дополнительное копирование
  • Основные параметры
    Задача резервного копирования — источник: выбираем нужную задачу
    Хранилище… источник: выбираем хранилище \\NAS\Backup\EveryDay
  • Хранилище архивов
    — Добавляем хранилище \\NAS\Backup\EveryMonth
    Автоматически удалять устаревшие резервные копии: 24
    — Добавляем хранилище EveryMonth (Google Диск)
    Автоматически удалять устаревшие резервные копии: 24
  • Файл архива
    Имя файла архива: название базы
    Окончание имени архива: yyyy.mm.dd_hh.nn.ss
    Архивирование
    Формат: 7z
    Сжатие: без сжатия
    Шифровать архивы
    Шифровать имена файлов
    Устанавливаем пароль (запишите его, если забудете, то бэкапы будет не восстановить)
  • Расписание автозапуска:
    Запускать по расписанию: включить
    Ежемесячно. Все месяцы 1 числа.
    05:00
  • Прервать выполнение задачи через: включить
    2 час. 0 мин.

По аналогии создаем задачу Дополнительное копирования для ежегодного плана, для быстроты копируем прошлую ежемесячную задачу и меняем в ней название, хранилище и расписание
  • Хранилище архивов
    — Добавляем хранилище \\NAS\Backup\EveryYear
    Автоматически удалять устаревшие резервные копии: 12
    — Добавляем хранилище EveryYear(Google Диск)
    Автоматически удалять устаревшие резервные копии: 12
  • Расписание автозапуска:
    Запускать по расписанию: включить
    Ежемесячно. Февраль 1 числа (год закрыт)
    05:00

Дополнительные задачи резервного копирования настроили, переходим к формированию отчета на почту

5. Задачи > Добавить задачу > Отправка отчетов
  • Основные параметры
    Количество дней...: 1
  • Выбираем все задачи, у всех выбираем фильтр записей: Записи журнала с ошибками
  • Параметры почты
    Заполняем реквизиты почты. Куда и с какой темой отправлять отчеты.
  • Расписание автозапуска:
    Запускать по расписанию: включить
    Ежедневно
    07:00

Осталось запустить все задачи по очереди и проверить на ошибки.

Пример журнала резервного копирования MS SQL базы весом 52Гб (mdf):
===========================================
Задача: Base1
Вид задачи: Резервное копирование файлов и баз данных
Компьютер: SRVTS0
Версия: 4.5 / 2
Запуск: По расписанию, как служба
Начало: 11.11.2019 4:01:08
Конец: 11.11.2019 5:13:57
Статус: Успешное выполнение задачи
===========================================
11.11.2019 4:01:08 - Резервное копирование MSSQL базы "Base1" ...
11.11.2019 4:01:08 - SQL Server version 11
11.11.2019 4:22:15 - Выполнено
11.11.2019 4:22:15 - Резервное копирование файлов ...
11.11.2019 4:22:15 - формат 7z, без сжатия, c шифрованием заголовка
11.11.2019 4:26:50 - 1 файлов добавлено, 0 файлов пропущено
11.11.2019 4:26:50 - Выполнено
11.11.2019 4:26:52 - Загрузка бэкапа 5,41 GB в хранилище "EveryDay (Google Диск)" ...
11.11.2019 4:26:54 - Загрузка "Base1_2019.11.11_04.26.52.7z" 5,41 GB (1 из 1)
11.11.2019 5:13:57 - Загрузка удачно завершена
11.11.2019 4:26:52 - Загрузка бэкапа 5,41 GB в хранилище "\\NAS\Backup\EveryDay" ...
11.11.2019 4:26:52 - Загрузка "Base1_2019.11.11_04.26.52.7z" 5,41 GB (1 из 1)
11.11.2019 4:28:13 - Загрузка удачно завершена

Из журнала видно, что загрузка в хранилище и в облако началась одновременно.
Бэкап в хранилище был завершен через 27 минут. А в облако был выгружен через 1 час 12 минут от старта задачи.
При условии, что параллельно в это же время выполнялось еще 4 задачи резервного копирования баз, размер которых 38Гб, 28Гб, 6Гб и 5Гб (mdf).
Все задачи были одновременно запущены в 4:00 и успешно завершены до 5:15:00.

Выводы:

Есть конечно и небольшие недоработки, кроме тех, что уже описал в статье:

  • отсутствие возможности экспорта и импорта настроек и задач в виде текстового файла (именно текстового, а не mdb и т.п., чтобы можно было легко открыть и отредактировать)
  • нет визуального сохранения настроек OAuth, всегда пусто и не понятно настроено или нет.
  • нет возможности быстро включить/выключать задания (нужно открывать каждое и заходить в расписание). Хотя в главном окне интуитивно так и просится двойной клик по галочке.

Но в целом результат меня очень порадовал. Считаю программу очень полезной.

Напишите о своих алгоритмах бэкапов, которые возможно вас сильно выручали и могут быть полезны другим.
UPD1: Добавил информацию о стоимости ПО, спасибо Filex

Комментарии (8)


  1. Filex
    13.11.2019 09:35
    +1

    Еще забыли написать, что «Effector Saver» является платным ПО, стоимостью 2500 руб., и у него платные обновления при переходе на новую версию (на официальном сайте переход с версии 3 на 4 стоит 1250 руб.)


    1. fronik Автор
      13.11.2019 11:17

      Что-то я упустил этот момент. Спасибо, исправил.


  1. vampire333
    13.11.2019 18:10

    Какой смысл переписывать сюда функционал платной программы, если все то же самое можно сделать бесплатно скриптом на питоне, написанным за 20-40 минут?


    1. fronik Автор
      14.11.2019 08:01

      Не все же умеют писать на питоне.
      Можно и батником сделать с помощью rsync и стандартных средств SQL.
      Каждый сам выбирает что по вкусу.


  1. UksusoFF
    13.11.2019 19:32

    Впринципе тоже самое можно сделать и бесплатной 3 версией Effector Saver.
    Нужно будет только поставить любой облачный клиент и настроить бекапы в его папку.
    А вообще Яндекс активно борется с теми кто хранит бекапы у них: https://toster.ru/q/677787 и https://efsaver.ru/blog/medlennaya-zagruzka-fajlov-na-yandeks-disk.html
    Не известно через сколько Гугол начнет резать скорость.


  1. capitannemo
    13.11.2019 21:23

    Если уж пошла речь о платных утилитах для 1С то купите Обновлятор 1С
    И по цене и по функционалу уделывает Effector Saver в разы

    Разве это нож
    1. vis_inet
      13.11.2019 22:22

      Да, отличный фильм!


  1. qwertEHOK
    13.11.2019 23:17

    Mssql сам умеет по расписанию все выполнять. И жать и шифровать и ложить куда надо. И даже восстанавливать.
    А если объединить с батником бесплатным или павершелом, то вообще чудо. И прога за 2500 не нужна.
    Подскажите, а это точно системное администрирование?