Контроль за удалением неактуальных бекапов

Posted by

Что меня подвигло на эту заметку, а сей факт что нужно удалять старые бекапы, место-то не резиновое. Хотя я ранее и опубликовал заметку по автоматическому удалению бекапов которые старше 14 дней посредством задачи в SQL Server 2014, но она вдруг почему-то перестала отрабатывать. Решение разбирается и скоро выйдет на моем блоге, а пока с местом нужно что-то делать. Проще всего задействовать планировщик заданий и скрипт посредством которого и будет происходить анализ состояния бекапов по времени создания. Итого проще уже быть не может да и в такой плачевной ситуации когда огромный продукт в лице SQL Server тебя так подводит. К тому же данная заметка с небольшими доработками может лечь и для других задач. Итак все действия происходят на Server 2008 R2 SP1 Enterprise.

Обязательно с сайта Microsoft скачиваем пакет: Windows Server 2003 Resource Kit Tools внутри которого содержится утилита и много других полезных в системном администрировании:

aollo@system:~$ md5sum Downloads/rktools.exe && ls -lh $_ && file $_

a623a99d60f8d34d9fbe089bb64368f2 Downloads/rktools.exe

-rw-rw-r— 1 aollo aollo 12M февр. 10 10:25 Downloads/rktools.exe

Downloads/rktools.exe: PE32 executable (GUI) Intel 80386, for MS Windows, MS CAB-Installer self-extracting archive

Устанавливаю данный пакет в систему.

Затем тестирую какие параметры мне нужны для работы:

C:\Windows\system32>forfiles.exe /p "D:\BackupBD" /d -9 /s /m "*.bak" /c "cmd /c

echo @file"

  • "Avto2_backup_2017_01_28_040604_5716905.bak"
  • "Avto2_backup_2017_01_30_040046_7739912.bak"
  • "Avto2_backup_2017_01_31_040034_8056901.bak"
  • "Avto2_backup_2017_02_01_040218_2156909.bak"
  • "barcmt_backup_2017_01_28_040604_5916905.bak"
  • "barcmt_backup_2017_01_30_040046_7969912.bak"
  • "barcmt_backup_2017_01_31_040034_8216901.bak"
  • "barcmt_backup_2017_02_01_040218_2526909.bak"
  • "bar_backup_2017_01_28_040604_5786905.bak"
  • "bar_backup_2017_01_30_040046_7889912.bak"
  • "bar_backup_2017_01_31_040034_8136901.bak"
  • "bar_backup_2017_02_01_040218_2336909.bak«

Затем создаю в текстовом редакторе bat-файл следующего содержания с применением утилиты forfiles из пакета: rktools и сохраняю (deleteoldfiles.bat) в созданный для скриптов каталог в папке C:\Windows\script

@echo off

rem Delete OLD BAK Backups

forfiles /p "D:\backupbd" /d -9 /s /m "*.bak" /c "cmd /c del /f /q @path"

exit

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

C:\Windows\system32>c:\Windows\Script\deleteoldfiles.bat

ERROR: No files found with the specified search criteria.

Press any key to continue . . .

Следовательно работает.

Теперь создаю задание посредством встроенного средства управления именуемого, как Task Scheduler (Планировщик заданий):

Start — Control Panel — Administrative Tools — Task Scheduler — Task Scheduler (local) — Create Basic Task…

Create a Basic Task:

  • Name: Delete Old Backup (bat) Files

Trigger:

  • When do you want the task to start? Weekly
  • Recur every: 1 weeks on: Sunday

Action:

  • What action do you want the task to perform? Start a program
  • Start a ProgramBrowse — указываю на созданный ранее скрипт

Finish:

  • Open the Properties dialog for this task when I click Finish: отмечаю галочкой

и нажимаю Finish, далее в открывшихся свойствах созданного задания изменяю настройки безопасности (Security Options)

  • Run whether user is logged on or not: отмечаю
  • Run with highest privileges: отмечаю
  • Configure for: Windows 7, Windows Server 2008 R2

и нажимаю OK, в тот же час появится окно подтверждения измененных параметров в рамках текущего задания и чтобы их подтвердить нужно указать идентификационные данные от имени кого будет запускаться данное задание:

  • User name: DOMAIN\User & Hostname\User
  • Password:

Теперь когда все проделано, проверяю, а запуститься ли данное задание хотя бы в ручную:

Task Scheduler (local) — Task Scheduler Library — и на задании через правый клик мышью выбираю элемент Run, задание успешно отрабатывает удаляя устаревшие бекапы. На момент написание данной заметке остаются бекапы базы с 03 по 10 что в общем-то хорошо. Цель заметки достигнута, с уважением Олло Александр aka ekzorchik.