Avtomatizacija procesa brisanja starih datotek dnevnika
Številne storitve in programi tam izdelujejo dnevnike kot revizijsko sled za vse, kar počnejo, a le malo jih ima funkcijo, ki odstrani te datoteke, ko preživijo svojo uporabnost. Zaradi tega te datoteke dnevnika sedijo v vašem sistemu in jedo presledke (včasih več kot veste) in neredne imenike za tiste čase, do katerih morate dostopati.
Torej, če ne potrebujete teh datotek, zakaj jih hranite? Pokazali vam bomo, kako lahko preprosto odstranite te stare datoteke dnevnika, da boste sistem lepo in urejeno.
Seveda, medtem ko smo spodaj opisani podatki takoj uporabni za upravljanje log datotek, lahko uporabite iste tehnike tudi za katero koli drugo vrsto datoteke, ki "poteče" (na primer varnostne kopije).
Odstrani datoteke na podlagi zadnje spremembe datuma
Če želite izbrisati obstoječe datoteke dnevnika samo na podlagi datuma zadnje spremembe datoteke, morate le narediti ukaz FORFILES. Na primer:
FORFILES / P “C: LogFiles” / S / D-7 / C “CMD / C DEL / F / Q @ PATH”
Zgornji ukaz izbriše vse datoteke iz mape »C: LogFiles« in vse podmape, ki niso bile spremenjene v zadnjem tednu.
Ukaz FORFILES je precej prilagodljiv s funkcijami iskalnega vzorca in datuma. Namesto številke lahko na primer vnesete datum, kot je "-1/13/2010", da izbrišete datoteke, ki so bile nazadnje spremenjene pred določenim datumom.
Če želite dobiti vse podrobnosti o tem, kaj lahko FORFILES počne, si oglejte spletno pomoč z naslednjim ukazom iz ukaznega poziva:
FORFILES /?
Odstranite datoteke, ki temeljijo na vzorcu datuma v imenu datoteke
Številne aplikacije in storitve izdelujejo datoteke dnevnika na podlagi vzorca datuma, da imajo eno datoteko dnevnika na dan (tj. Log100113.txt, Backup-2010-01-13.zip, itd.). Za te vrste datotek je bolje izbrisati na podlagi datuma datoteke, vključene v ime datoteke, ne pa datuma zadnje spremembe. To je uporabno za scenarije, kot je shranjevanje vseh dnevnikov v zadnjih 3 mesecih. Na žalost Windows nima domačega ukaza s to vrsto logike, toda s paketnim skriptom lahko to nalogo enostavno upravljamo.
Obstajajo primeri, ki so vključeni v komentarje o uporabi scenarija, zato bi bilo treba precej enostavno ugotoviti.
Scenarij
@ECHO OFF ECHO Izbriši po datumu Vzorec ECHO Napisal: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Brisanje / izbiranje datotek glede na datum, ki uporablja MM in / ali DD za vzorčenje imen datotek. REM REM Uporaba: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Podaja vzorec, ki se uporablja na podlagi mesecev. REM / D Podaja vzorec, ki se uporablja, temelji na dnevih. REM NumberToKeep REM Število mesecev (/ M) ali dni (/ D) za ohranjanje, vključno s trenutnim. REM Na primer, vnos 1 ohrani samo trenutni mesec / dan in 6 zadrži trenutni minus 5. REM Pot Korenska lokacija za iskanje. Iskali se bodo podimeniki. REM PatternPrefix REM Vzorec iskanja datotek pred gradnjo iskalnega niza pred mesecem / dnevom. REM PatternPostfix REM Vzorec iskanja datotek se po gradnji iskalnega niza postavi po mesecu / dnevu. REM / L (izbirno) Seznam vseh datotek, ki ustrezajo vzorcu, vendar jih ne izbriše. REM / DEL (neobvezno) Izbriše vse datoteke, ki ustrezajo vzorcu. REM REM Primeri: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex? ??. log / DEL REM Izbriše vse datoteke dnevnika IIS (Windows Server 2003), razen za trenutni in prejšnja dva meseca. REM DeleteByDatePattern / D 7 "D: Varnostna kopija" * - ???? - ?? - .zip / DEL REM Izbriše vse datoteke zip iz mape D: Varnostna kopija, razen za trenutni teden. REM Zgoraj navedeni vzorec imena datoteke je "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Natisne seznam vseh datotek na pogonu C, ki se ujemajo z vzorcem: " * -MM- * "(kjer je MM nadomeščen z 01-12) REM DeleteByDatePattern / D 14" C: Dnevniki "Log - ???? .txt REM Natisne seznam vseh vzorcev, ki bi jih obdelal skript. SETLOCAL EnableExtensions EnableDelayedExpansion REM Predpostavlja, da so vaše nastavitve datuma / časa operacijskega sistema Windows nastavljene na format "DayOfWeek M / D / YYYY". REM Če je vaš format drugačen, boste morali spodaj spremeniti spremenljivke, da se bodo poravnali. FOR / F "žetoni = 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET mesec = %% B SET dan = %% C SET Year = %% D) IF / I % 1 == / M (SET Keep =% mesec% SET = 12) IF / I % 1 == / D (SET Keep =% Day% SET Max = 31 REM od maksimalnih dni v prejšnjem mesecu SET / A PrevMonth =% Mesec% -1 IF! PrevMonth! EQU 2 (SET = 28 REM Leap let… dodajte več, kot je potrebno. IF / I% Leto% EQU 2012 SET Max = 29 IF / I% letno% 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 =% Shrani% SET / A Keep =% Shrani% -% 2 + 1 REM Določite obseg, ki ga želite odstraniti. SET / A RemoveHighStart =% Trenutni% + 1 IF / I%%% LSS 1 (SET RemoveLow = 0 SET / A OdstraniHighEnd =% Shrani% +% Max% -1) ELSE (SET / A RemoveLow =% Keep% -1 SET RemoveHighEnd =% Max%) REM Proces vse manj kot nizko območje. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Proces %% Z% 3% 4% 5% 6 REM Proces je večji od visokega območja. ZA / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Proces %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Konec: Postavi SET = 0% 1 SET = = Ključ: % -2% SET Target = "% ~ 2% ~ 3% ključ%% ~ 4" ECHO Ciljni vzorec:% Cilj% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Cilj% GOTO Konec: Konec
Avtomatizacija procesa
Ukaz FORFILES je izvirni za Windows, vendar pa mora biti skript DeleteByDatePattern postavljen v mapo, ki je definirana v spremenljivki Path (kot je mapa Windows), tako da jo lahko pokličete, kot da je izvorni ukaz. Ko to storite, lahko ustvarite razporejeno opravilo, ki je en sam ukaz (če ga morate izbrisati samo z ene lokacije) ali paketno datoteko (če jo morate izbrisati iz več lokacij), ki se izvaja dnevno, tedensko, mesečno ali kadar koli.
Še ena stvar, ki jo lahko postaviš in pozabi.
Povezave
Prenesite Delete By Date vzorec skripta iz Sysadmin Geek