Бэкап файловых и SQL баз 1С (в облако и с шифрованием)

    В этой статье я хочу поделиться опытом резервного копирования файловых и 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
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 10

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

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

          +1

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

          0

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

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

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

                0

                Зачем платный софт, если прекрасно справляется Cobian Backup? Работает со всеми серверами Windows, в том числе и 2019. Лет 10 уже пользуюсь, как раз для сохранения 3х типов копий — локальной, сетевой и облачной (в облако он не отправляет, но с этим прекрасно справляются сами облачные клиенты, просто копирую в их папку, шифруя силами Cobian). https://en.wikipedia.org/wiki/Cobian_Backup
                "Обновлятор 1С" так же бесплатен (можно и лицензию купить, она в разы дешевле, а толку больше). https://helpme1c.ru/obnovlyator-1s-gruppovoe-paketnoe-obnovlenie-vsex-baz-za-odin-raz

                  0

                  А что на хабре можно инструкции программы постить? Да еще и инструкция в оригинале на языке автора.
                  И почему сразу платная? Там можно было вроде пользоваться бесплатно в коммерческих целях, не работает вроде только отключение пользователей (по фактру простой вызов com объекта) и еще что-то. Но все это решается двумя скриптами общедоступными.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое