Что меня подвигло на эту заметку, а сей факт что нужно удалять старые бекапы, место-то не резиновое. Хотя я ранее и опубликовал заметку по автоматическому удалению бекапов которые старше 14 дней посредством задачи в SQL Server 2014, но она вдруг почему-то перестала отрабатывать. Решение разбирается и скоро выйдет на моем блоге, а пока с местом нужно что-то делать. Проще всего задействовать планировщик заданий и скрипт посредством которого и будет происходить анализ состояния бекапов по времени создания. Итого проще уже быть не может да и в такой плачевной ситуации когда огромный продукт в лице SQL Server тебя так подводит. К тому же данная заметка с небольшими доработками может лечь и для других задач. Итак все действия происходят на Server 2008 R2 SP1 Enterprise.
Обязательно с сайта Microsoft скачиваем пакет: Windows Server 2003 Resource Kit Tools внутри которого содержится утилита forfiles и много других полезных в системном администрировании:
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 Program — Browse — указываю на созданный ранее скрипт
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.