Домашняя » как » Автоматизация процесса удаления старых файлов журнала

    Автоматизация процесса удаления старых файлов журнала

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

    Так что, если вам не нужны эти файлы, зачем их хранить? Мы покажем вам, как легко удалить эти старые файлы журналов, чтобы поддерживать вашу систему в хорошем состоянии..

    Конечно, в то время как рассмотренное ниже мгновенно полезно для управления файлами журналов, вы также можете применить те же методы к любому другому типу «устаревших» файлов (например, к резервным копиям)..

    Удалить файлы на основе даты последнего изменения

    Если вы хотите очистить существующие файлы журналов, основываясь только на дате последнего изменения файла, все, что вам нужно сделать, это использовать команду FORFILES. Например:

    FORFILES / P «C: LogFiles» / S / D -7 / C «CMD / C DEL / F / Q @PATH»

    Приведенная выше команда удалит все файлы из папки «C: LogFiles» и все подпапки, которые не были изменены за последнюю неделю.

    Команда FORFILES довольно гибкая с функциями поиска и даты. Например, вместо числа можно ввести дату, например «-1/13/2010», чтобы удалить файлы, которые были изменены в последний раз до указанной даты..

    Чтобы получить все сведения о возможностях FORFILES, просмотрите интерактивную справку, используя следующую команду из командной строки:

    ФАЙЛЫ /?

    Удалить файлы на основе шаблона даты в имени файла

    Многие приложения и службы создают файлы журналов на основе шаблона даты, чтобы иметь один файл журнала в день (т.е. Log100113.txt, Backup-2010-01-13.zip и т. Д.). Для этих типов файлов предпочтительно удалять на основе даты файла, включенного в имя файла, а не даты последнего изменения. Это полезно для таких сценариев, как сохранение всех файлов журнала за последние 3 месяца. К сожалению, в Windows нет встроенной команды с такой логикой, но с помощью пакетного скрипта мы легко справимся с этой задачей..

    Есть примеры, включенные в комментарии использования скрипта, так что это должно быть довольно легко выяснить.

    Сценарий

    @ECHO OFF ECHO Удалить шаблон по дате ECHO Автор сценария: Джейсон Фолкнер ECHO SysadminGeek.com ECHO. ECHO. REM Удалить / Выбрать файлы на основе даты, которая использует MM и / или DD для шаблонов именования файлов. REM REM Использование: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Указывает используемый шаблон на основе месяцев. REM / D Указывает используемый шаблон на основе дней. REM NumberToKeep REM Количество месяцев (/ M) или дней (/ D), включая текущий. REM Например, ввод 1 сохраняет только текущий месяц / день, а 6 - текущий минус 5. REM Path Корневое местоположение для поиска. Подкаталоги будут искать. REM PatternPrefix REM Шаблон поиска файла, размещенный перед месяцем / днем ​​при построении строки поиска. REM PatternPostfix REM Шаблон поиска файла, размещенный после месяца / дня при построении строки поиска. REM / L (необязательно) Выводит список всех файлов, соответствующих шаблону, но не удаляет их. REM / DEL (необязательно) Удаляет все файлы, соответствующие шаблону. REM REM Примеры: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Удаляет все файлы журнала IIS (Windows Server 2003), за исключением текущего и предыдущих двух месяцев. REM DeleteByDatePattern / D 7 «D: Backup» * - ???? - ?? - .zip / DEL REM Удаляет все zip-файлы из папки D: Backup за исключением текущей недели. REM Предполагаемый выше шаблон имени файла: "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Печатает список всех файлов на диске C, соответствующих шаблону: " * -MM- * "(где MM заменяется на 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Печатает список всех шаблонов, которые будут обработаны сценарием. SETLOCAL EnableExtensions EnableDelayedExpansion REM Предполагается, что ваши настройки даты / времени Windows установлены в формате «DayOfWeek M / D / YYYY». REM Если ваш формат отличается, вам нужно изменить приведенные ниже переменные, чтобы они выровнялись. FOR / F "токены = 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET Месяц = ​​%% B SET Day = %% C SET Год = %% D) IF / I % 1 == / M (SET Keep =% Месяц% SET Max = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 Оперативная память от максимальных дней предыдущего месяца. SET / A PrevMonth =% Месяц% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM високосных лет… добавьте больше по мере необходимости. IF / I% Year% EQU 2012 SET Max = 29 IF / I% Год% EQU 2016 SET Max = 29) IF / I! PrevMonth! EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET Max = 30 IF / I! PrevMonth! EQU 9 SET Max = 30 IF / I! PrevMonth! EQU 11 SET Макс. = 30) SET Ток =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM Определить диапазон, который необходимо удалить. SET / A RemoveHighStart =% Текущий% + 1 IF / I% Keep% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1 SET RemoveHighEnd =% Max%) REM Обрабатывать все, что меньше нижнего диапазона. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Обрабатывать %% Z% 3% 4% 5% 6 REM Обрабатывать все больше верхнего диапазона. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Процесс %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Окончание: ключ SET процесса = 0% 1 ключ SET = ключ%: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" ECHO Target Pattern:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Target% GOTO Конец: Конец

    Автоматизация процесса

    Команда FORFILES является родной для Windows, однако сценарий DeleteByDatePattern следует поместить в папку, определенную в переменной Path (например, в папке Windows), чтобы ее можно было вызывать так, как если бы она была нативной командой. Как только это будет сделано, вы можете создать запланированное задание, которое будет представлять собой одну команду (если вам нужно только удалить из одного места) или пакетный файл (если вам нужно удалить из нескольких мест), который выполняется ежедневно, еженедельно, ежемесячно или всякий раз, когда.

    Еще одна вещь, которую вы можете установить и забыть.

    связи

    Скачать скрипт удаления по дате с сайта Sysadmin Geek