Контроль места под резервные копии, с автоматическим удалением файлов при нехватке, с оповещением

28.06.19

Разработка - Инструментарий разработчика

Для контроля места и удаления файлов при нехватке на дисках под BackUp, удаленно по сети. Оповещает по почте о проделанной работе на указанный адрес электронной почты.

Скачать исходный код

Наименование Файл Версия Размер
Контроль места под резервные копии
.epf 28,78Kb
2
.epf 1.1.4 28,78Kb 2 Скачать

Как-то возникла идея контролировать резервные копии баз в автоматическом режиме.

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

Как понимаете для такого количества резервных копий дисков не напасешься, учитывая то, что база весит больше 100гб. Данные резервные копии создаются штатными средствами MS SQL  в автоматическом режиме. Резервные копии также дублируются на 2 разных сервера.

Схема создания резервных копий на MS SQL (как выглядит у меня): 

- резервная копия каждый день (храним минимум 6 копий)

- резервная копия каждую неделю (храним минимум 6)

- резервная копия каждый месяц (храним минимум 2)

- резервная копия ежеквартально (храним минимум 2)

Далее, чтобы для данных копий хватало места, данная обработка автоматически выполняется в определенный момент времени, перед созданием резервных копий, анализируя место на диске серверов, и очищая если его не хватает (для добавления данной формы в фоновые задания, читайте мою публикацию //infostart.ru/public/153090/)

Логика контроля места такая: 

Автоматически создается vbs скрипт, который высчитывает свободные объемы дисков указанных серверов (важно запускать данную обработку от имени администратора) Откуда взят данный скрипт уже не вспомню, очень давно это было. Но важно то, что он работает! Создастся файл указанный в настройке: Файл хранения остатка места на диске, откуда вытягивается остаток места на диске компьютера. Для того чтобы выбрать именно тот диск, на котором размещены резервные копии, нужно указать диск в поле: Диск. В поле Сервер указать имя компьютера на котором лежат резервная копия, именно имя! В поле База вбиваем имя базы (тут без разницы какое имя, просто идет группировка по данному полю, если проверяется несколько).

Обработка собирает все резервные копии по указанным папкам, сортирует по Времени изменения файла, замеряет размер последнего, и уже пляшет от него. В настройке задается еще параметр: Добавить байт к максимальному размеру BackUp, это сколько нужно прибавить размеру свободного пространства для очистки файлов. Также есть параметр: Максимальный размер BackUp (если не найден ни один файл) - нужен в случае, если нет или не найден файл BackUp.. это на всякий случай.

В результате обработка опирается на текущие параметры, анализируя оставшееся место на дисках, количество хранимых резервных копий. Если определяется нехватка места на диске, и в какой-то группе превышено количество хранимых файлов, самые старые будут удаляться пока остаток места на диске не будет достаточным. Если определяется нехватка места на диске, и отсутствует минимальное количество файлов, будет удален самый старый файл, и т.д.

В макете ФайлНастройки указываем путь хранения настройки. Это нужно сделать через конфигуратор.

Как видим по скрину, данная форма работает как в обычных формах, так и в управляемых.

Данная обработка должна работать в любой конфигурации и любых релизах.

Тестировалась на конфигурациях: УПП 1.3.115.2; БП 3.0.64.54; БП 2.0.66.64.

обработка контроль резервных копий фоновая задача автоматическая

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125034    683    389    

732

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 руб.

06.10.2023    7787    24    6    

42

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4292    12    2    

36

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178673    1084    0    

862

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99646    239    97    

298

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18402    6    8    

40

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23861    16    15    

33

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28329    3    10    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. hercares 22.02.19 23:13 Сейчас в теме
Есть возможность реализовать использование, к примеру, viber бот вместо email, который можно заметить несвоевременно?
4. iones 195 26.02.19 09:25 Сейчас в теме
(1)В качестве оповещения, можно прикрутить все что угодно.
2. user1162240 23.02.19 18:07 Сейчас в теме
А не легче все реализовать через батники и Планировщик заданий операционной системы?
3. iones 195 26.02.19 09:24 Сейчас в теме
(2)Если же вы можете все данные функции реализовать bat-файлом. Пожалуйста!
Не претендую на то, что только такой вид реализации имеет право быть. Это как еще один из вариантов решения.
5. hercares 26.02.19 10:07 Сейчас в теме
ИМХО, вариант с оповещением на email кажется архаичным и не оперативным. Но да, вы правы, можно прикрутить
6. iones 195 26.02.19 10:18 Сейчас в теме
(5)Где как. В нашей организации в обязательном порядке должен быть запущен почтовый клиент, с оповещением поверх всех окон. Нас это как раз устраивает. А остальное закрыто (соц.сети, viber, whatsapp, skype и т.п.)
Учту пожелания на будущие версии.
7. CyberMuesli 14.04.19 10:32 Сейчас в теме
Очередная приблуда, решающая то, что делается штатными средствами SQL и правильной схемой бэкапирования.

Продуктив: база 100Гб, размер полного бэкапа 20Гб, посекундный restore — на два два месяца назад, хранение: часовой диф — 4 часа, ежедневные копии — 2 дня, еженедельные — месяц, ежемесячные — год. Итого 400Гб. Какая еще нехватка места? Какой размер современных СХД?

Старые копии удаляются штатными средствами SQL. Проектный документ, описывающий схему управления местом с помощью скриптика, который неизвестно откуда взялся, но работает — не согласовало бы и одно вменяемое ответственное лицо.

В RTO 1 час укладываемся с запасом.

В контурах разработки и опытно промышленной эксплуатации — по 50 баз актуальностью не более месяца для разработки и тестирования по разным задачам. Итого сто копий продуктива.

Т.к. они жестоко режутся при передаче, их размеры по 10…30Гб, общий объем 800 Гб. Схема бэкапа — месяц посекундного отката каждой базы, до двух месяцев — restore на точки восстановления, в качестве ежедневных и еженедельных копий выступают дифы, что на порядок снижает необходимое место. Итого размер бэкапов двух сред — 700 Гб.

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

Но при грамотном подходе, места для бэкапов нужно не более, чем винт с самым рядовым объемом. Не только для одной продуктивной базы, но и для целых сред.

P.S. с удивлением узнал, что инфостарт заменяет в сообщениях слово от-кат на звездочку. ))
8. iones 195 28.05.19 10:55 Сейчас в теме
(7) Читайте сообщение (3)
Перед тем как плеваться и осуждать. Это реализация контроля средствами 1С. Да, есть еще сотня другая вариантов решения. Не претендует на уникальность.
Насчет скриптика, выкладываю для изучения. Откуда я его нашел, уже не вспомню, это было более 10 лет назад.
Код ниже:
Const ForReading = 1
Const ForWriting = 2
Const tFolder = "d:\log\"
Const tFileName = "log.txt"

set objFSO=CreateObject ("Scripting.FileSystemObject")

Set objFile = objFSO.OpenTextFile(tFolder & tFileName, ForWriting)
sText = "disks"
objFile.WriteLine sText
objFile.Close

strComputer = "my_comp_name"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDiskDrives = objWMIService.ExecQuery("SELECT * FROM Win32_DiskDrive")

For Each objDrive In colDiskDrives
	strDeviceID = Replace(objDrive.DeviceID, "\", "\\")
	Set colPartitions = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_DiskDrive.DeviceID=""" & strDeviceID & """} WHERE AssocClass = " & "Win32_DiskDriveToDiskPartition")
	For Each objPartition In colPartitions
		Set colLogicalDisks = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_DiskPartition.DeviceID=""" & objPartition.DeviceID & """} WHERE AssocClass = " & "Win32_LogicalDiskToPartition")
		For Each objLogicalDisk In colLogicalDisks
			Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk Where DeviceID = '" & objLogicalDisk.DeviceID & "'")
			For Each objDisk in colDisks

				Set objFile = objFSO.OpenTextFile(tFolder & tFileName, ForReading)
				sFileText = objFile.ReadAll
				objFile.Close

				Set objFile = objFSO.OpenTextFile(tFolder & tFileName, ForWriting)

				objFile.WriteLine sFileText & objLogicalDisk.DeviceID & " - " & objDisk.FreeSpace & " byte"
				objFile.Close

			Next
		Next
	Next
Next
Показать
Оставьте свое сообщение