Automatiserer prosessen med å slette gamle loggfiler
Mange tjenester og programmer der ute produserer loggfiler som et revisjonsspor for alt de gjør, men få har en funksjon som fjerner disse filene etter hvert som de overleverer deres brukbarhet. Som et resultat sitter disse loggfilene på systemet ditt, og spiser opp plass (noen ganger mer enn du vet) og roterende kataloger for de tidene du trenger for å få tilgang til dem.
Så hvis du ikke trenger disse filene, hvorfor behold dem? Vi skal vise deg hvordan du enkelt kan fjerne disse gamle loggfilene for å holde systemet godt og ryddig.
Selvfølgelig, mens vi dekker nedenfor, er det umiddelbart nyttig å administrere loggfiler, du kan også bruke de samme teknikkene til enhver annen type "utløper" fil (for eksempel sikkerhetskopier).
Fjern filer basert på sist endret dato
Hvis du vil slette dine eksisterende loggfiler basert utelukkende på den siste endrede datoen for filen, må du bare bruke FORFILES-kommandoen. For eksempel:
FORFILER / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q @PATH"
Kommandoen ovenfor vil slette alle filer fra mappen "C: LogFiles" og alle undermapper som ikke er endret i den forrige uken.
FORFILES-kommandoen er ganske fleksibel med søkemønsteret og datofunksjonene. For eksempel, i stedet for et nummer, kan du skrive inn en dato som '-1/13/2010' for å slette filer sist endret før den angitte datoen.
For å få alle detaljene på hva FORFILES kan gjøre, se online hjelp ved å bruke følgende kommando fra ledeteksten:
FORFILES /?
Fjern filer basert på et dato mønster i filnavnet
Mange applikasjoner og tjenester produserer loggfiler basert på et datamønster for å ha en loggfil per dag (dvs. Log100113.txt, Backup-2010-01-13.zip, etc.). For disse typer filer, er det å foretrekke å slette basert på datoen for filen som er innlemmet i filnavnet i stedet for den siste endrede datoen. Dette er nyttig for scenarier som for eksempel å holde alle loggfilene de siste 3 månedene. Dessverre har Windows ikke en innfødt kommando med denne typen logikk, men med et batch script kan vi enkelt håndtere denne oppgaven.
Det finnes eksempler i bruk kommentarer på skriptet, så det burde være ganske enkelt å finne ut.
Manuset
@ECHO AV ECHO Slett etter dato mønster ECHO Skrevet av: Jason Faulkner ECHO SysadminGeek.com ECHO. EKKO. REM Slett / velg filer basert på en dato som bruker MM og / eller DD for filnavn. REM REM Bruk: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Angir mønsteret som brukes, er basert på måneder. REM / D Angir mønsteret som brukes, er basert på dager. REM NumberToKeep REM Antall måneder (/ M) eller dager (/ D) for å beholde, inkludert gjeldende. REM For eksempel, inntasting 1 holder bare den nåværende måneden / dagen og 6 vil beholde den nåværende minus 5. REM-banen Roten for å søke. Underkataloger blir søkt. REM PatternPrefix REM Filsøkemønsteret plassert før i måneden / dagen når du bygger søkestrengen. REM PatternPostfix REM Filsøkemønsteret plassert etter måneden / dagen når du bygger søkestrengen. REM / L (valgfritt) Viser alle filer som samsvarer med mønsteret, men sletter ikke dem. REM / DEL (valgfritt) Sletter alle filer som samsvarer med mønsteret. REM REM Eksempler: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Sletter alle IIS loggfiler (Windows Server 2003) med unntak av nåværende og tidligere to måneder. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Sletter alle zip-filer fra D: Backup-mappen unntatt den aktuelle uken. REM Filnavnet mønsteret antatt ovenfor er "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Skriver ut en liste over alle filer på C-stasjonen som samsvarer med mønsteret: " * -MM- * "(hvor MM er erstattet med 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Skriver ut en liste over alle mønstre som ville bli behandlet av skriptet. SETLOCAL EnableExtensions EnableDelayedExpansion REM Forutsetter at Windows Date / Time-innstillingene er satt til 'DayOfWeek M / D / YYYY' format. REM Hvis formatet ditt er annerledes, må du endre variablene nedenfor slik at de justeres. FOR / F "tokens = 1,2,3,4 delims = /" %% A IN ('DATO / T') DO (SET Måned = %% B SET DAG = %% C SET År = %% D) IF / I % 1 == / M (SET Keep =% Måned% SET Maks = 12) IF / I % 1 == / D (SET Keep =% Dag% SET Maks = 31 REM Arbeide av de forrige månedens maks dager. SET / A PrevMonth =% Måned% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM Leap år ... legg til mer etter behov. IF / I% År% EQU 2012 SET Max = 29 IF / I% År% EQU 2016 SET Maks = 29) IF / I! PrevMonth! EQU 4 SET Maks = 30 IF / I! PrevMonth! EQU 6 SET Maks = 30 IF / I! ForrigeMonth! EQU 9 SET Max = 30 IF / I! PrevMonth! EQU 11 SET Maks = 30) SET Current =% Hold% SET / A Keep =% Hold% -% 2 + 1 REM Bestem rekkevidde som skal fjernes. SET / A RemoveHighStart =% Nåværende% + 1 IF / I% Hold% LSS 1 (SET FjernLow = 0 SET / A RemoveHighEnd =% Hold% +% Maks% -1) ELSE (SET / A RemoveLow =% Hold% -1 SET RemoveHighEnd =% Max%) REM Behandle alle mindre enn lavspekteret. FOR / L %% Z IN (1,1,% RemoveLow%) KALL: Prosess %% Z% 3% 4% 5% 6 REM Prosessere alle større enn høye nivåer. FOR / L %% Z IN (% FjernHighStart%, 1,% RemoveHighEnd%) KALL: Prosess %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Slutt: Prosess SET Tast = 0% 1 SET Tast =% Tast: ~ -2% SET Mål = "% ~ 2% ~ 3% Nøkkel %% ~ 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 End: End
Automatiserer prosessen
FORFILES-kommandoen er innfødt i Windows, men scriptet DeleteByDatePattern skal plasseres i en mappe som er definert i sti-variabelen (for eksempel Windows-mappen), slik at den kan kalles som om den var en innfødt kommando. Når dette er gjort, kan du opprette en planlagt oppgave som enten er en enkelt kommando (hvis du bare trenger å slette fra ett sted) eller en batchfil (hvis du må slette fra flere steder) som går daglig, ukentlig, månedlig eller når.
En ting du kan sette og glemme.
lenker
Last ned Slett etter dato mønster skript fra Sysadmin Geek