Startpagina » hoe » Het automatiseren van het proces van het verwijderen van oude logbestanden

    Het automatiseren van het proces van het verwijderen van oude logbestanden

    Veel services en programma's produceren logbestanden als een audit trail voor alles wat ze doen, maar slechts weinigen hebben een functie die deze bestanden verwijdert naarmate ze langer nutteloos zijn. Dientengevolge, zitten deze logbestanden op je systeem en eten ze ruimte op (soms meer dan je weet) en rommelige mappen voor die keren dat je ze moet openen.

    Dus als je deze bestanden niet nodig hebt, waarom zou je ze dan bewaren? We laten u zien hoe u deze oude logbestanden eenvoudig kunt verwijderen om uw systeem netjes en opgeruimd te houden.

    Natuurlijk, terwijl we hieronder behandelen zijn meteen handig voor het beheren van logbestanden, je kunt dezelfde technieken ook toepassen op elk ander type "verlopen" bestand (zoals back-ups).

    Bestanden verwijderen op basis van de laatst gewijzigde datum

    Als u uw bestaande logbestanden alleen op basis van de laatste gewijzigde datum van het bestand wilt wissen, hoeft u alleen maar de opdracht FORFILES te gebruiken. Bijvoorbeeld:

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

    Met de opdracht hierboven worden alle bestanden uit de map "C: LogFiles" verwijderd en alle submappen die in de afgelopen week niet zijn gewijzigd.

    Het FORFILES-commando is vrij flexibel met het zoekpatroon en de datumfuncties. In plaats van een cijfer kunt u bijvoorbeeld een datum zoals '-1/13/2010' invoeren om bestanden te verwijderen die het laatst zijn gewijzigd vóór de opgegeven datum.

    Als u alle details wilt weten over wat FORFILES kan doen, bekijkt u de online-help met de volgende opdracht vanaf de opdrachtprompt:

    FORFILES /?

    Verwijder bestanden op basis van een datumpatroon in de bestandsnaam

    Veel toepassingen en services produceren logbestanden op basis van een datumpatroon, zodat er één logboekbestand per dag is (bijvoorbeeld Log100113.txt, Backup-2010-01-13.zip, enzovoort). Voor dit soort bestanden verdient het de voorkeur om te verwijderen op basis van de datum van het bestand dat is opgenomen in de bestandsnaam in plaats van de datum van de laatste wijziging. Dit is handig voor scenario's zoals het bijhouden van alle logbestanden voor de afgelopen 3 maanden. Helaas heeft Windows geen native commando met dit type logica, maar met een batch-script kunnen we deze taak gemakkelijk aan.

    Er zijn voorbeelden opgenomen in de opmerkingen over het gebruik van het script, dus het zou vrij eenvoudig moeten zijn om erachter te komen.

    Het script

    @ECHO UIT ECHO Verwijderen op datumpatroon ECHO Geschreven door: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Verwijder / selecteer bestanden op basis van een datum die MM en / of DD gebruikt voor bestandsnaampatronen. REM REM Gebruik: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Specificeert het patroon dat wordt gebruikt, is gebaseerd op maanden. REM / D Specificeert het patroon dat wordt gebruikt, is gebaseerd op dagen. REM-nummerToKeep REM Het aantal te houden maanden (/ M) of dagen (/ D), inclusief de stroom. REM Bijvoorbeeld, het invoeren van 1 houdt alleen de huidige maand / dag bij en 6 zou de huidige min 5 behouden. REM-pad De rootlocatie om te zoeken. Subdirectories worden doorzocht. REM PatternPrefix REM Het bestandszoekpatroon dat vóór de maand / dag is geplaatst bij het samenstellen van de zoekreeks. REM PatternPostfix REM Het bestandszoekpatroon dat na de maand / dag wordt geplaatst bij het samenstellen van de zoekreeks. REM / L (optioneel) Geeft een overzicht van alle bestanden die overeenkomen met het patroon, maar verwijdert ze niet. REM / DEL (optioneel) Wist alle bestanden die overeenkomen met het patroon. REM REM-voorbeelden: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Wist alle IIS-logbestanden (Windows Server 2003) behalve de huidige en de vorige twee maanden. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Wist alle zip-bestanden uit de map D: Backup, met uitzondering van de huidige week. REM Het hierboven aangenomen bestandsnaampatroon is "* -JJJJ-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Drukt een lijst af van alle bestanden op de C-schijf die overeenkomen met het patroon: " * -MM- * "(waarbij MM wordt vervangen door 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Drukt een lijst af van alle patronen die door het script zouden worden verwerkt. SETLOCAL EnableExtensions EnableDelayedExpansion REM Verandert dat uw Windows datum / tijd-instellingen zijn ingesteld op 'DayOfWeek M / D / YYYY' indeling. REM Als uw indeling anders is, moet u de onderstaande variabelen aanpassen zodat ze worden uitgelijnd. FOR / F "tokens = 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 Werking van de max dagen van de vorige maand. SET / A PrevMonth =% Month% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Sprongjaren ... meer toevoegen indien nodig IF / I% Year% EQU 2012 SET Max = 29 IF / I% Jaar% 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 =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM Bepaal het bereik dat moet worden verwijderd. SET / A RemoveHighStart =% Current% + 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 Verwerk alle minder dan het lage bereik. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Proces %% Z% 3% 4% 5% 6 REM Verwerking alles groter dan het hoge bereik. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Verwerken %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Einde: Verwerken SET-toets = 0% 1 SET-toets =% Sleutel: ~ -2% SET Doel = "% ~ 2% ~ 3% Sleutel %% ~ 4" ECHO-doelpatroon:% Doel% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Doel% GOTO Einde: einde

    Het proces automatiseren

    Het FORFILES-commando is native voor Windows, maar het DeleteByDatePattern-script moet in een map worden geplaatst die is gedefinieerd in uw padvariabele (zoals uw Windows-map), zodat het kan worden aangeroepen als een native-commando. Wanneer dit is gebeurd, kunt u een geplande taak maken die een enkele opdracht is (als u alleen op één locatie hoeft te verwijderen) of een batchbestand (als u van meerdere locaties wilt verwijderen) dat dagelijks, wekelijks, maandelijks wordt uitgevoerd of wanneer.

    Nog iets dat je kunt instellen en vergeten.

    Links

    Download Wis op datum Patroon-script van Sysadmin Geek