Приветствую Вас ГостьЧетверг, 28.03.2024, 11:41

В помощь админу


Каталог статей

Главная » Статьи » Windows » Резервное копирование

Автоматическое избавление от устаревших архивов
Резервные копии, бэкапы, архивы и прочая лишняя информация рано или поздно забивает хранилище под завязку и в итоге у нас не останется свободного места под резервные копии важной для фирмы информации. И как говорится, если не успел проследить, то остался без бэкапа, а он как раз нам нужен позарез. Конечно же можно придумать целую систему и автоматизировать сей процесс, что будет работать как часики, но лично я не стал так сильно заморачиваться, а выбрал как всегда золотую середину.
Под золотой серединой я имею в виду приблизительный расчёт количества бэкапов с ёмкостью хранилища так, чтобы всегда было половина хранилища свободна. Но это дело вкуса - каждый может придумат свой план резервного копирования и сместить планку свободного места на хранилище в любую сторону. Многое будет зависеть от потребностей организации, в которой Вы работаете.
В итоге что я сделал, чтобы освободить себя от необходимости постоянного контроля за резервными копиями:
  1. Написал скрипт, который отслеживает устаревшие резервные копии и убирает их с хранилища. При этом шлёт мне письмо на почту о проделанной работе.
  2. Немного понаблюдал за ходом резервного копирования и тем самым выявил ту золотую середину, то есть то количество бэкапов, которые может одновременно храниться на хранилище.

Ну и сам скрипт DeleteOldArhives.vbs:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'  Скрипт, который избавляет админа от процесса слежения за бэкапами  '
'  Этот скрипт следит за давностью архивов и автоматически удаляет    '
'    просроченные архивы. Также предусмотрен механизм отчётности.     '
'   Скрипт написал Анчуров Олег Владимирович в 2014 году. Версия 1.   '
'                  Скрипт DeleteOldArhives.vbs                        '
'                   Сайт http://ithelp.moy.su                         '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
on error resume next

Dim Fso, f, f1, fc, fn, a
Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Arhiv1',..., ArhiveN - правим ручками под свои нужды
Dim kA1',..., kAn        - правим ручками под свои нужды

Arhiv1 = ""
'...                     - правим ручками под свои нужды
'ArhivN = ""             - правим ручками под свои нужды

kA1 = 0

Set f = fso.GetFolder("\\BackupSrv\Arhiv1") 'Путь к архиву правим под свой
Set fc = f.Files
For Each f1 in fc
a = DateDiff("d", f1.DateLastModified, Now)
If a > 90 Then   'Если возраст архива больше 90 дней, то архив на хутор бабочек ловить!
    fn = f1.name
    f1.Delete
    kA1 = kA1 + 1
    Arhiv = Arhiv + "Удалён архив: " & fn & " - давность архива в днях: " & CStr(a) & chr(13) & chr(10)
End If
Next
Arhiv1 = Arhiv1 + "Всего удалено: " & CStr(kA1) & chr(13) & chr(10) & chr(13) & chr(10)

'Если несколько папок с архивами, то клонируем код под каждую папку с архивами по аналогии
'...

'Set f = fso.GetFolder("\\BackupSrv\ArhivN")
'Set fc = f.Files
'For Each f1 in fc
'a = DateDiff("d", f1.DateLastModified, Now)
'If a > 90 Then   'Если возраст архива больше 90 дней, то архив нах!
'    fn = f1.name
'    f1.Delete
'    kAn = kAn + 1
'    ArhivN = ArhivN + "Удалён архив: " & fn & " - давность архива в днях: " & CStr(a) & chr(13) & chr(10)
'End If
'Next
'ArhivN = ArhivN + "Всего удалено: " & CStr(kAn) & chr(13) & chr(10) & chr(13) & chr(10)
'Если есть, что рассказать админу, то шлём ему весточку по почте
If kA1 > 0 then  'Если проверяем несколько папок с архивами, то условие такого вида: (kA1 + ... + kAn) > 0
    Dim objEmail, MSG
    MSG = "ПРОТОКОЛ РАБОТЫ СКРИПТА, АВТОМАТИЧЕСКИ УБИРАЮЩЕГО СТАРЫЕ АРХИВЫ БЭКАПОВ:" + chr(13) + chr(10) + chr(13) + chr(10)
    If kA1 > 0 then
        MSG = MSG + "Протокол удаления архивов бэкапов:" + chr(13) + chr(10)
        MSG = MSG + Arhiv1
    End If
   
    'Если несколько папок с архивами, то клонируем код под каждую папку с архивами по аналогии
    '...
   
    'If kAn > 0 then
    '    MSG = MSG + "Протокол удаления архивов бэкапов:" + chr(13) + chr(10)
    '    MSG = MSG + ArhivN
    'End If
    MSG = MSG + "Всего удалено архивов: " + CStr(kA) + chr(13) + chr(10)+ chr(13) + chr(10)
    MSG = MSG + "Время/дата отработки скрипта: " + CStr(Time) + "/" + CStr(Date) + chr(13) + chr(10)
    Const EmailFrom = "bot@superfirma.ru"      ' от кого будет отправляться e-mail
    Const EmailPassword = "SuperPuperPassword" ' пароль от e-mail отправителя
    Const strSmtpServer = "smtp.superfirma.ru" ' smtp сервер
    Const EmailTo = "admin@superfirma.ru"      ' Кому будет отправляться e-mail
    Set objEmail = CreateObject("CDO.Message")
    objEmail.From = EmailFrom
    objEmail.To = EmailTo
    objEmail.Subject = "Отчёт по работе скрипта DeleteOldArhive" ' Тема письма
    objEmail.Textbody = MSG
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = EmailFrom
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = EmailPassword
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmtpServer
    objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    objEmail.Configuration.Fields.Update
    objEmail.Send
    Set objEmail = Nothing ' Чистим память.
End If
Set Fso = Nothing          ' Чистим память.   


Ну и на последок маленькое примечание.
Для данного скрипта я создал еженедельное задание - раз в неделю в воскресенье скрипт автоматически запускается этим заданием.
Жизнь админа должна быть проще!

Категория: Резервное копирование | Добавил: isz (30.01.2014)
Просмотров: 2051 | Теги: бэкап, vbs, Скрипт, vbscript, архив, backup | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Active Directory [12]
DHCP [1]
Windows [13]
Wins [1]
Групповая политика [3]
Программы [2]
Резервное копирование [6]
Сеть [5]
Скрипты [31]
Терминальный сервер [7]
Почта [7]
Реестр [2]
Реестр Windows
Командная строка [7]
CMD: Командная строка Windows
Поиск
Форма входа
Наш опрос
Оцените мой сайт
Всего ответов: 147
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика