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

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

    Багато служб і програм там створюють лог-файли як аудит для всього, що вони роблять, проте мало хто має функцію, яка видаляє ці файли, коли вони переживають їхню корисність. Як наслідок, ці файли журналу знаходяться у вашій системі, вживаючи пробіли (іноді більше, ніж ви знаєте) і захоплюючи каталоги для тих часів, до яких вам потрібно отримати доступ до них.

    Отже, якщо вам не потрібні ці файли, навіщо їх зберігати? Ми збираємося показати вам, як легко видалити ці старі файли журналів, щоб зберегти систему приємною та охайною.

    Звичайно, в той час, як ми наводимо нижче, це безпосередньо корисно для керування файлами журналу, ви можете також застосувати ті ж самі методи до будь-якого іншого типу файлу, що "закінчується" (наприклад, резервні копії)..

    Видалення файлів на основі останньої зміни

    Якщо ви хочете очистити існуючі файли журналів виключно на дату останньої зміни файлу, вам потрібно лише скористатися командою FORFILES. Наприклад:

    FORFILES / P “C: LogFiles” / S / D-7 / C “CMD / C DEL / F / Q”

    Вищевказана команда видалила б усі файли з папки "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 ШаблонПрефікс ШаблонPostfix [/ L | / DEL] REM / M Визначає шаблон, який використовується на основі місяців. REM / D Визначає, який шаблон використовується на основі днів. REM NumberToKeep REM Кількість місяців (/ M) або днів (/ D) для збереження, включаючи поточний. REM Наприклад, введення 1 зберігає тільки поточний місяць / день і 6 зберігає поточний мінус 5. REM Шлях Корневе розташування для пошуку. Буде здійснено пошук підкаталогів. 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: Резервне копіювання" * - ???? - ?? - .zip / DEL REM Видаляє всі zip-файли з папки D: Backup, за винятком поточного тижня. REM Наведений вище шаблон імені файлу є "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Друкує список всіх файлів на диску C, відповідних шаблону: " * -MM- * (де ММ замінюється на 01-12) REM DeleteByDatePattern / D 14 "C: Журнали" Журнал - ???? .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 Month = %% B SET Day = %% C SET Year = %% D) IF / I % 1 == / M (SET Keep =% Month% SET Max = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 REM-робота) ВИМКНУТИ / ПопередняМунція =% Місяць% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Високі роки… додайте більше, якщо потрібно. IF / I% Рік% EQU 2012 SET Max = 29 IF / I% Рік% EQU 2016 НАСТРОЙКИ Макс. = 29) IF / I! PrevMonth! EQU 4 SET Макс = 30 IF / I! PrevMonth! EQU 6 SET Макс = 30 IF / I! / I! PrevMonth! EQU 11 SET Макс = 30) SET Current =% Keep% SET / A Keep =% Зберегти% -% 2 + 1 REM Визначте діапазон, який потрібно видалити. SET / A RemoveHighStart =% Current% + 1 IF / I%% 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 Key = 0% 1 SET Key =% Key: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" ECHO Цільовий зразок:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Завдання% GOTO Кінець: Кінець

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

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

    Ще одну річ, яку ви можете встановити і забути.

    Посилання

    Завантажити сценарій вилучення за шаблоном від Sysadmin Geek