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

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

Перейти к публикации

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