Начална » как да » Автоматизиране на процеса на изтриване на стари лог файлове

    Автоматизиране на процеса на изтриване на стари лог файлове

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

    Така че, ако не ви трябват тези файлове, защо да ги пазите? Ще ви покажем как лесно да премахнете тези стари лог файлове, за да поддържате системата ви приятна и подредена.

    Разбира се, докато обхващаме по-долу са незабавно полезни за управление на лог файлове, можете да приложите същите техники за всеки друг тип „изтичащ” файл (като архиви).

    Премахване на файлове въз основа на последната промяна дата

    Ако искате да изчистите съществуващите регистрационни файлове, базирани единствено на датата на последната промяна на файла, трябва само да използвате командата 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. Хуманитарна помощ. 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 Отпечатва списък на всички файлове на диска С, съответстващи на модела: " * -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 ден = %% C SET година = %% D) IF / I % 1 == / M (SET Keep =% месец% SET = 12) IF / I % 1 == / D (SET Keep =% Day% SET = 31 REM Работа) Изключване на максималните дни от предходния месец SET / A PrevMonth =% Месец% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap години… добавете повече, ако е необходимо. IF / I% Година% EQU 2012 SET Max = 29 IF / I% Година% EQU 2016 НАСТРОЙКА Макс. = 29) IF / I PrevMonth! EQU 4 SET Макс. = 30 IF / I! ПредишнаMonth! EQU 6 SET Макс. = 30 IF / I! / I! PrevMonth! EQU 11 SET Макс. = 30) SET Current =% Keep% SET / A Keep =% Запази% -% 2 + 1 REM Определете обхвата, който ще бъде премахнат. SET / A RemoveHighStart =% Текущо% + 1 IF / I% Запазване на% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Запазване на% +% 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% Ключ %% ~ 4" ECHO Целева схема:% Целева% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Целева% GOTO Край: Край

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

    Командата FORFILES е собственост на Windows, но скриптът DeleteByDatePattern трябва да бъде поставен в папка, дефинирана във вашата променлива Path (като папката на Windows), така че да може да бъде извикана така, сякаш тя е собствена команда. След като това бъде направено, можете да създадете планирана задача, която е или една команда (ако трябва само да изтриете от едно място), или групов файл (ако трябва да изтриете от няколко места), който се изпълнява ежедневно, седмично, месечно или когато.

    Още едно нещо, което можете да зададете и да забравите.

    звена

    Изтегляне Изтриване по дата Сценарий от Sysadmin Geek