Automatizácia procesu odstraňovania starých súborov denníka
Veľa služieb a programov tam vytvára log súbory ako audit trail pre všetko, čo robia, ale len málo má funkciu, ktorá odstráni tieto súbory, pretože prežívajú ich užitočnosť. Výsledkom je, že tieto súbory denníka sedia vo vašom systéme a vyčerpajú priestor (niekedy viac, než viete) a preplnením adresárov pre tie časy, kedy ich potrebujete.
Takže ak tieto súbory nepotrebujete, prečo ich chcete držať? Ukážeme vám, ako ľahko odstrániť tieto staré súbory denníkov, aby ste udržali systém pekný a uprataný.
Samozrejme, zatiaľ čo sme pokrytie nižšie sú okamžite užitočné pre správu log súborov, môžete použiť rovnaké techniky na akýkoľvek iný typ "vyprší" súbor (napríklad zálohovanie).
Odstrániť súbory na základe posledného zmeneného dátumu
Ak chcete vymazať existujúce súbory denníka založené výlučne na poslednom zmenenom dátume súboru, stačí použiť príkaz FORFILES. Napríklad:
FORFILES / P "C: LogFiles" / S / D -7 / C "CMD / C DEL / F / Q" PATH "
Vyššie uvedený príkaz odstráni všetky súbory zo zložky "C: LogFiles" a všetky podadresáre, ktoré neboli zmenené v poslednom týždni.
Príkaz FORFILES je pomerne flexibilný s funkciami vyhľadávania a dátumovými funkciami. Napríklad namiesto čísla môžete zadať dátum ako "-1.13.2010" na vymazanie súborov naposledy upravených pred zadaným dátumom.
Ak chcete získať všetky podrobnosti o tom, čo môže FORFILES urobiť, prečítajte si online pomoc pomocou príkazu z príkazového riadka:
FORFILES /?
Odstrániť súbory na základe modelu dátumu v názve súboru
Mnoho aplikácií a služieb produkuje súbory denníkov založené na dátovom vzore tak, že majú jeden denník denne (t.j. Log100113.txt, Backup-2010-01-13.zip atď.). Pre tieto typy súborov je lepšie vymazať na základe dátumu súboru, ktorý je súčasťou názvu súboru, a nie posledného modifikovaného dátumu. To je užitočné pri scenároch, ako je udržiavanie všetkých súborov denníka za posledné 3 mesiace. Bohužiaľ systém Windows nemá natívny príkaz s týmto typom logiky, ale s dávkovým skriptom túto úlohu ľahko zvládneme.
Existujú príklady obsiahnuté v komentároch o používaní skriptu, takže by malo byť celkom ľahké zistiť.
Scenár
@ECHO OFF ECHO Zmazať podľa dátumu Pattern ECHO Napísal: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Delete / Select files na základe dátumu, ktorý používa MM a / alebo DD pre vzory pomenúvania súborov. REM REM Použitie: REM DeleteByDatePattern / M | / D NumberToKeep Cesta PatternPrefix PatternPostfix [/ L | / DEL] REM / M Špecifikuje, že použitý vzor je založený na mesiacoch. REM / D Určuje použitý vzor založený na dňoch. REM NumberToKeep REM Počet mesiacov (/ M) alebo dní (/ D), ktoré sa majú uchovávať vrátane aktuálneho. REM Napríklad zadanie 1 udrží iba aktuálny mesiac / deň a 6 by udržalo aktuálne mínus 5. REM Cesta Lokalita koreňa na vyhľadávanie. Zobrazia sa podadresáre. REM PatternPrefix REM Vzor vyhľadávania súborov umiestnený pred mesiacom / dňom pri vytváraní vyhľadávacieho reťazca. REM PatternPostfix REM Vzor vyhľadávania súborov umiestnený po mesiaci / dni pri vytváraní vyhľadávacieho reťazca. REM / L (voliteľné) Zobrazí zoznam všetkých súborov zodpovedajúcich vzoru, ale neodstráni ich. REM / DEL (voliteľné) Vymaže všetky súbory zodpovedajúce vzoru. REM REM Príklady: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex? log / DEL REM Odstráni všetky súbory protokolu IIS (Windows Server 2003) okrem aktuálneho a predchádzajúcich dvoch mesiacov. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Vymaže všetky súbory zip zo zložky D: Backup s výnimkou aktuálneho týždňa. REM Vyššie uvedený vzorec názvu súboru je "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Vytlačí zoznam všetkých súborov na jednotke C zodpovedajúcej vzoru: * -MM- * "(kde MM je nahradené 01-12) REM DeleteByDatePattern / D 14" C: Logy "Log - ???? .txt REM Vytlačí zoznam všetkých vzorov, ktoré by skript spracoval. SETLOCAL EnableExtensions EnableDelayedExpansion REM Predpokladá sa, že nastavenia dátumu a času systému Windows sú nastavené na formát "DayOfWeek M / D / YYYY". REM Ak je váš formát iný, budete musieť zmeniť premenné nižšie, aby sa zarovnali. FOR / F "žetóny = 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET Mesiac = %% B SET deň = %% C SET Rok =% / I % 1 == / M (SET Keep =% Mesiac% SET Max = 12) IF / I % 1 == / D (SET Max = 28 REM Doba prechodov ... pridajte viac podľa potreby IF / I% Rok% EQU 2012 SET MAX = 29 IF / I% Rok% EQU 2016 SET Max = 29) IF / I! Prevmont EQU 4 SET Max = 30 IF / I! Prevmont! EQU 6 SET Max = 30 IF / I! / I! Prevmonth! EQU 11 SET Max = 30) Nastaviť prúd =% Udržať% SET / A Ponechať =% Keep% -% 2 + 1 REM Určiť rozsah, ktorý sa má odstrániť. SET / A RemoveHighStart =% Aktuálne% + 1 IF / I% Udržanie% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) SET RemoveHighEnd =% Max%) REM Spracujte všetko menej ako nízky rozsah. FOR% L %% Z IN (1,1,% RemoveLow%) ODPOVEĎ: Proces %% Z% 3% 4% 5% 6 REM Spracujte všetko väčšie ako vysoký rozsah. Pre ukončenie: Spustiť proces SET Key = 0% 1 Tlačidlo SET =% Kľúč:% FORMAT%% Z% 3% 4% 5% ~ -2% SET Cieľ = "% ~ 2% ~ 3% Kľúč %% ~ 4" ECHO Cieľový vzor:% Cieľ% IF / I % 5 == / L DIR% Target% / I % 5 == / DEL DEL / F / S / Q% Cieľ% GOTO Koniec: Koniec
Automatizácia procesu
Príkaz FORFILES je natívny v systéme Windows, ale skript DeleteByDatePattern by mal byť umiestnený v priečinku definovanom vo vašej premennej Cesty (napríklad vo vašom priečinku Windows), takže sa dá nazvať ako prírodný príkaz. Akonáhle sa to stane, môžete vytvoriť plánovanú úlohu, ktorá je buď jedným príkazom (ak potrebujete odstrániť len z jedného miesta) alebo dávkový súbor (ak potrebujete odstrániť z viacerých miest), ktorý beží denne, týždenne, mesačne alebo kedykoľvek.
Ďalšia vec, ktorú môžete nastaviť a zabudnúť.
odkazy
Stiahnite si Odstrániť podľa dátumu Pattern skript zo Sysadmin Geek