Выгрузка информационной базы с возможностью копирования — внешняя утилита (BackupCripo v.1.2)

Приложение позволяет создавать архивную копию ИБД средствами 1С, может также использоваться просто для разрыва и блокировки соединений пользователей с БД , с дальнейщей разблокировкой. К особенностям данной утилиты можно отнести возможность создания определенного количества (задается в настройках) уникальных копий. Т. е., например, четыре дня создается новая порция архива, на
пятый затирается самая старая. Есть возможность шифровать Логин и Пароль пользователя, под которым будет происходить операция выгрузки. Можно вести логирование операций. Максимум комфорта ))

Приложение используется в трех режимах, что определяется параметром командной строки:

 — /LOCK — Прерывает соединения пользователей с БД и блокирует все дальнейшие попытки входа.

 — /BACKUP — Выгружает ИБД.

 — /RESET — Снимает блокировку БД

Запуск утилиты возможен только с одним из параметров!  Можно вывести справку, используя ключ /? .

  В конфигурационном файле (*.exe.config) имеются дополнительные параметры, для настройки работы:

 — PathApp — Путь и имя исполняемого файла 1С

 — DbName — Задает БД. Синтаксис:

                   /F <Путь к каталогу БД> — Файловый вариант

                  /S <СерверИмя БД> — Серверный 

 — PathBk — Каталог, куда будет выгружаться БД

 — KeyDb — Идентификатор архива, соответствующий определенной БД. Я использую 1 символ.

 — Options — Дополнительные параметры командной строки 1С. В конфиге указаны необходимые, вы можете дописать свои. Не надо дописывать опцию /Out — при работе в режиме  /BACKUP задается автоматически.

— KeyModeBackup — Задает режим создания архивных копий. Имеет два значения:

                               — Limited — Имя архива соответствует определенной маске  и содержит счетчик итераций,                                                                      который задается параметром MaxOrder.

                               — Unique — Имя архива каждый раз Уникально.

 — MaxOrder — Задает макисмальное количество порций архива в режиме Limited, допустимые значения 1 — 9 .

 — UseCrpPass — Определяет, использовать ли шифрование данных пользователя. (True / False).

 — Login — Задается Имя Пользователя (если используется режим без шифрования).

 — Password — Задается Пароль Пользователя (если используется режим без шифрования) .

— UseLogging — Вести лог обращений к БД    (True / False)

  Предполагается следующий порядок работы с утилитой.  Приложение запускается с параметром /Lock, прерывает все  коннекты и устанавливает блокировку соединений с БД. При этом инициализируется параметр разблокировки (ПР), который задается в процедуре общего модуля 1С, по умолчанию он имеет значение «КодРазрешения». Данное  значение и  задано в конфиг. файле приложения в параметре /Options, измените его, если необходимо.   Далее, при запуске приложения с параметром /Backup создается архивная копия и последний вариант запуска с параметром /Reset снимает блокировку БД. Если вы будете использовать /Lock , то запуск /Backup и /Reset не отработает без правильного указания ПР. При запуске в режиме /Lock ПР вроде как бы и не нужен, но абсолютно не  мешает, поэтому он прописывается на постоянной основе в Options. Если блокировка БД вам не нужна, используйте  приложение только в режиме /Backup. Можно использовать утилиту только для блокировки и разблокировки без  режима /Backup. При создании заданий в планировщике заданий (удобно использовать ночью) интервал запуска  между /Lock и /Backup лучше делать не менее 15 мин., в этом случае /Lock гарантированно отработает.

    Имеется две редакции приложения  BackupTsg и BackupCripo. Во второй ко всем возможностям добавляется ещё шифрование Логина и Пароля. В редакции BackupCripo параметры Login и Password не заполняются, для задания этих параметров используется дополнительная утилита RegApplet.exe.

Синтаксис RegApplet.exe /SL<Логин> /SP<Пароль> . В результате выполнения формируется файл User1c.dat, в котором хранятся логин и пароль пользователя, при работе BackupCripo использует данные из этого файла для соединения с БД.

Т е RegApplet.exe используется единоразово.  Если вы хотите убедиться, какие данные хранятся в User1c.dat, необходимо запустить RegApplet.exe /DS.   При этом User1c.dat должен находиться в одном каталоге с RegApplet.exe. Если при использовании версии  BackupCripo и установленном в True  UseCrpPass, вы зададите значения параметров Login или  Password то будут использоваться именно эти значения, а не те что хранятся в  User1c.dat.

В состав архива BackupTsg входят два файла — исполняемый файл и *.config .

В состав архива BackupCripo входят четыре файла:

 — BackupCripo.exe   — исполняемый файл и *.config

— BackupCripo.exe.config — файл настроек

— ManageCripto.dll — библиотека шифрования

— RegApplet.exe — утилита создания файла User1c.dat.

 User1c.dat создается в каталоге, где запускается RegApplet.exe, после этого его надо переложить в каталог, который прописан в параметре PathBk.  Далее RegApplet.exe можно убрать в шкаф )) В остальном принцип работы BackupCripo полностью совпадает с BackupTsg.  Для BackupTsg параметр UseCrpPass не имеет значения.

Для работы необходим установленый Microsoft .NET Framework 4.6.  Скачать можно здесь https://www.visualstudio.com/downloads/download-visual-studio-vs  Обычно устанавливается при установке Windows.

При редактировании файла *.exe.config необходимо соблюдать условие, чтобы после редактирования кодировка файла сохранилась UTF-8 . При использовании Notepad необходимо открывать файла непосредственно из Блокнота, перед этим установив кодировку  UTF-8 ,  а не из контекстного меню Рабочего стола Windows. Также удобно пользоваться     для этих целей редактором PSPad (http://www.pspad.com/ru/).

Обратите внимание, в файле *.exe.config  заполненное значение хранится в виде: <value>Значение</value> , а пустое    <value />. 

Update:

 — v.1.2 (07.09.2024)

   — Добавлен параметр TypeAction — значения: Upload — выгрузка данных; Copy — копирование файла *.1CD для файловой БД. Т е появилась возможность копирования. Копирование файла данных 1С происходит даже в том случае, если с базой работают пользователи, что согласно рекомендациям 1С недопустимо. Поэтому данная утилита также может пригодится   и для данного варианта сохранения данных.

 — Улучшенно логирование операций.

 Приятной работы …

16 Comments

  1. Созинов

    Исходники будут или это коммерческая обработка в будущем?

    Reply
  2. Serggray

    Исходники на C# и да хотелось бы в будущем ..)

    Reply
  3. ZOMI

    Но…. Зачем это?

    Reply
  4. TODD22

    И выгружает в *.dt файл?

    Reply
  5. Serggray

    выгружает в *.dt файл

    Reply
  6. TODD22

    (5) Крайне вредная разработка и способ создания резервных копий.

    Reply
  7. Serggray

    to TODD22 так не пользуйтесь, я пока вреда не наблюдаю

    Reply
  8. TODD22

    (7) Это вы не наблюдаете и пока не наблюдаете…. Так вы же другим советуете 😉

    Да и вообще за создание резервных копий выгрузкой *.dt файла надо по рукам давать.

    Reply
  9. Serggray

    кому вы собираетесь давать по рукам 1с ? Если у вас есть что-то конкретное говорите ..

    Reply
  10. TODD22

    (9) что вам конкретно сказать?

    Я вам уже конкретнее некуда сказал что нужно давать по руками за то что делают бэкапы выгрузкой в *.dt. Собственно то же самое написано и в документации 1С.

    Пример из практики. У меня 120+ баз в розничных точках все они в РИБе.

    Каждый день происходят разные невероятные вещи. За несколько месяцев упало 3 узла. Разрушились какие то таблицы. Восстановить не получится.

    Но из копии каталога(кстати как и рекомендует делать фирма 1С в документации) ещё можно попробовать восстановить базу. Или хотя бы выгрузить из неё данные.

    Выгрузка в *.dt файл может пройти. Но выгрузится может битая база которая потом назад уже не загружается. Загрузка падает с «ошибкой формата потока».

    Вот как пример недели 3 назад была у нас ситуация сломалась база. Я конечно же скопировал каталог с базой. Запустил восстановление базы. Оно мне сообщило что восстановило какие то таблицы. Я запускаю конфигуратор. Делаю на всякий случай выгрузку в .dt файл.(бывает что выгрузишь/загрузишь базу и начинает работать).

    И запускаю ТиИ. Через 2 минуты ТиИ вылетает с ошибкой. Открываю базу. А базы больше нет. Пусто! Просто пустая конфигурация.

    Пробую загрузить из *.dt файла пишет «ошибка формата потока». И вот какая польза от такого бэкапа?

    Затем я открыл базу в скопированном каталоге и из неё выгрузил продажи за нужный мне период и загрузил в центральную базу. ну и создал новый узел взамен повреждённого… но это уже как бы к делу отношения не имеет.

    Может нужно всё же читать документацию от фирмы 1С?

    Reply
  11. Bukaska

    (10) TODD22, Насколько я тоже знаю, самый оптимальный бекап, это копирование *CD файла))))

    Reply
  12. TODD22

    (11) Bukaska, ну да… есть хотя бы какие то возможности данные восстановить или частично выгрузить.

    Ну и это рекомендация фирмы 1С. О чём и написано в документации.

    Reply
  13. Serggray

    … на Linux -е вы тоже будете каталоги копировать ? Если база битая то поздно уже что-то копировать, а как раз можно

    воспользоваться для восстановления ранее выгруженным *.dt или backup-ом БД на уровне сервера БД. Мы пользуемся

    таким механизмом уже 5 лет , за это время раза два восстанавливали базу после аварии нормально ну и много раз в стандартном режиме после перехода на новые версии ОС или БД. Извините на этом дискусию с вами заканчиваю.

    Reply
  14. Serggray

    to TODD22 последний пост

    Reply
  15. Serggray

    По итогам дискусии в утилиту добавленна возможность Копирования файла данных 1С. Ниже представлена выдержка из рекомендаций 1С по использованию выгрузки данных


    Не рекомендуется использовать данный способ для создания резервной копии информационной базы по следующим причинам:

    ● может возникнуть ситуация, при которой файл выгрузки будет невозможно загрузить, если в информационной базе, из которой производилась выгрузка, существовали ошибки;

    ● длительное время создания;

    ● необходимость монопольного доступа к базе данных;

    ● высокие требования к оперативной памяти.

    Реальным противопоказанием м б пункт первый. Но выгрузка данных действительно расчитана на то что БД находится в работоспособном состоянии, с другой стороны Копирование файла не является залогом восстановления БД

    на нужный момент, в случае некорректного состояния данных. Длительность при размере более 4 Гб примерно совпадает. При копировании также запрещена работа пользователей. В пользу файла *.dt играет его мобильность. Поэтому на мой взгляд наиболее удобным и надежным вариантом было бы использование обеих способов (1 порцию файла CD и несколько dt ) ) , ну а для клиент-серверного варианта — backup сервера БД и *.dt Ну а там каждый решает сам ..

    Reply
  16. Созинов

    (10) TODD22, Согласен, нужно делать норм бекап каталога если файловая база или пользоваться средствами СУБД. Мы так и делали, но я регулярное еще делал параллельно выгрузку|загрузку в свои локальные базы для доработки, было удобно (в крупной компании по хорошему нужен отдельный сервер отладки, ну а франч и так понятно имеет нормальную среду разработки). Правда все этом можно bat файлами сделать. В общем пробовал в свое время разные утилиты для бекапа — и вернулся к скриптам в маленькой компании и к нормальной настройке бекапов в крупной (тут конечно никакие утилиты не помогут). Тем не менее — отдельные функции таких программ удобны, хотя еще раз соглашусь иногда бывают фейлы (правда практики у меня не так много, и слишком запущенных случаев не встречал). Но и при бекапе каталога — результат во многих случаях не лучше, если уж база посыпалась — то дело дрянь.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *