Hemsida » hur » Automatiserar processen för att radera gamla loggfiler

    Automatiserar processen för att radera gamla loggfiler

    Många tjänster och program där ute producerar loggfiler som ett revisionsspår för allt de gör, men få har en funktion som tar bort dessa filer när de överlever sin användbarhet. Som ett resultat sitter dessa loggfiler på ditt system och äter upp utrymme (ibland mer än du vet) och kladdande kataloger för de gånger du behöver åtkomst till dem.

    Så om du inte behöver dessa filer, varför behålla dem? Vi ska visa dig hur du enkelt kan ta bort dessa gamla loggfiler för att hålla systemet snyggt och städat.

    Självklart, medan vi täcker nedan är omedelbart användbara för hantering av loggfiler, kan du också använda samma tekniker för någon annan typ av "utgående" fil (till exempel säkerhetskopieringar).

    Ta bort filer baserat på senast ändrad datum

    Om du vill rensa dina befintliga loggfiler baserade uteslutande på filens sista ändringsdatum, behöver du bara använda kommandot FORFILES. Till exempel:

    FORFILER / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q @ PATH"

    Ovanstående kommando skulle radera alla filer från mappen "C: LogFiles" och alla undermappar som inte har ändrats under den senaste veckan.

    Kommandot FORFILES är ganska flexibelt med sökmönstret och datumfunktionerna. Till exempel, istället för ett nummer, kan du ange ett datum som "-1/13/2010" för att radera filer senast ändrade före det angivna datumet.

    För att få alla detaljer om vad FORFILES kan göra, se onlinehjälpen med hjälp av följande kommando från kommandotolken:

    FORFILER /?

    Ta bort filer baserat på ett datummönster i filnamnet

    Många applikationer och tjänster producerar loggfiler baserat på ett datummönster för att ha en loggfil per dag (dvs Log100113.txt, Backup-2010-01-13.zip, etc.). För dessa typer av filer är det att föredra att ta bort baserat på datumet för filen som ingår i filnamnet i stället för det senaste ändringsdatumet. Detta är användbart för scenarier som att hålla alla loggfiler under de senaste 3 månaderna. Tyvärr har Windows inte ett inbyggt kommando med denna typ av logik men med ett batch-skript kan vi enkelt hantera den här uppgiften.

    Det finns exempel som ingår i användarkommentarerna på manuset, så det ska vara ganska lätt att räkna ut.

    Manuset

    @ECHO OFF ECHO Radera efter datummönster ECHO Skrivet av: Jason Faulkner ECHO SysadminGeek.com ECHO. EKO. REM Delete / Välj filer baserat på ett datum som använder MM och / eller DD för filnamn mönster. REM REM Användning: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Anger vilket mönster som används baserat på månader. REM / D Anger vilket mönster som används baserat på dagar. REM NumberToKeep REM Antalet månader (/ M) eller dagar (/ D) för att behålla, inklusive strömmen. REM Till exempel, att mata in 1 behåller endast den aktuella månaden / dygnet och 6 skulle hålla den aktuella minus 5. REM-sökvägen Roten för att söka. Underkataloger kommer att sökas. REM PatternPrefix REM Filsökmönstret placerat före månaden / dagen när du bygger söksträngen. REM PatternPostfix REM Filsökmönstret placerat efter månaden / dagen när du bygger söksträngen. REM / L (valfritt) Listar alla filer som matchar mönstret, men tar inte bort dem. REM / DEL (valfritt) Raderar alla filer som matchar mönstret. REM REM-exempel: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Raderar alla IIS-loggfiler (Windows Server 2003) med undantag för aktuella och tidigare två månader. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Tar bort alla zip-filer från mappen D: Backup förutom den aktuella veckan. REM Filnamnsmönstret som antas ovan är "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Skriver ut en lista över alla filer på C-enheten som matchar mönstret: " * -MM- * "(där MM ersätts med 01-12) REM DeleteByDatePattern / D 14" C: Loggar "Log - ???? .txt REM Skriver ut en lista över alla mönster som skulle behandlas av manuset. SETLOCAL EnableExtensions EnableDelayedExpansion REM Antag att din Windows Date / Time-inställningar är inställda på 'DayOfWeek M / D / YYYY' format. REM Om ditt format är annorlunda måste du ändra variablerna nedan så att de anpassas. FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('DATUM / T') DO (SET Månad = %% B SET-dag = %% C SET-år = %% D) IF / I % 1 == / M (SET Keep =% Månad% SET Max = 12) IF / I % 1 == / D (SET Keep =% Dag% SET Max = 31 REM Arbeta av de föregående månadens maximala dagar. SET / A PrevMonth =% Månad% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap år ... lägg till mer efter behov. IF / I% År% EQU 2012 SET Max = 29 IF / I% År% 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 Max = 30) SET Current =% Håll% SET / A Keep =% Håll% -% 2 + 1 REM Bestäm det område som ska tas bort. SET / A RemoveHighStart =% Aktuell% + 1 IF / I% Håll% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Håll% +% Max% -1) ELSE (SET / A RemoveLow =% Håll% -1 SET RemoveHighEnd =% Max%) REM Processera allt mindre än lågområdet. FOR / L %% Z IN (1,1,% RemoveLow%) KALLA: Process %% Z% 3% 4% 5% 6 REM Processen är allt större än höga intervallet. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) KALLA: Process %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Slut: Process SET Key = 0% 1 SET-tangent =% Tangent: ~ -2% SET Mål = "% ~ 2% ~ 3% Nyckel %% ~ 4" ECHO Målmönster:% Mål% IF / I % 5 == / L DIR% Mål% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Mål% GOTO Slut: Slut

    Automatiserar processen

    Kommandot FORFILES är inbyggt i Windows, men scriptet DeleteByDatePattern ska placeras i en mapp definierad i din sökvägsvariabel (t.ex. din Windows-mapp) så att den kan kallas som om det var ett inbyggt kommando. När det här är gjort kan du skapa en schemalagd uppgift som antingen är ett enda kommando (om du bara behöver radera från en enda plats) eller en batchfil (om du behöver radera från flera platser) som körs dagligen, veckovis, månadsvis eller närhelst.

    En sak du kan ställa in och glömma.

    länkar

    Hämta Delete By Date Pattern script från Sysadmin Geek