Domovská » jak » Automatizace procesu odstraňování starých souborů protokolu

    Automatizace procesu odstraňování starých souborů protokolu

    Mnoho služeb a programů tam vytváří soubory protokolu jako auditovací stopu pro vše, co dělají, ačkoli málo má funkci, která odstraňuje tyto soubory, protože přežívají jejich užitečnost. Výsledkem je, že tyto soubory protokolu sedí ve vašem systému a přinášejí prostor (někdy víc, než víte) a přeplnění adresářů, které potřebujete k jejich přístupu.

    Takže pokud tyto soubory nepotřebujete, proč je udržet? Ukážeme vám, jak snadno odstranit tyto staré soubory protokolu, abyste udrželi systém hezký a uklizený.

    Samozřejmě, zatímco my pokrýváme níže jsou okamžitě užitečné pro správu souborů protokolu, můžete použít stejné techniky na jakýkoli jiný typ "vyprší" soubor (například zálohování).

    Odstranit soubory na základě posledního změněného data

    Pokud chcete vymazat existující soubory protokolu založené pouze na posledním změněném datu souboru, stačí pouze použít příkaz FORFILES. Například:

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

    Výše uvedený příkaz by odstranil všechny soubory ze složky "C: LogFiles" a všechny podsložky, které nebyly v minulém týdnu upraveny.

    Příkaz FORFILES je poměrně flexibilní s vyhledávacím vzorem a datovými funkcemi. Například namísto čísla můžete zadat datum, například "-1.13.2010", abyste odstranili soubory, které byly naposledy změněny před stanoveným datem.

    Chcete-li získat všechny podrobnosti o tom, co FORFILES může udělat, přečtěte si nápovědu online pomocí následujícího příkazu z příkazového řádku:

    FORFILES /?

    Odebrat soubory založené na datovém vzorku v názvu souboru

    Mnoho aplikací a služeb vytváří soubory protokolu založené na datovém vzorku tak, aby obsahovaly jeden soubor protokolu denně (tj. Log100113.txt, Backup-2010-01-13.zip atd.). U těchto typů souborů je vhodné smazat na základě data souboru, který je součástí názvu souboru namísto posledního změněného data. To je užitečné pro scénáře, jako je uchování všech souborů protokolu za poslední 3 měsíce. Bohužel systém Windows nemá přirozený příkaz s tímto typem logiky, ale s dávkovým skriptem můžeme tento úkol snadno zvládnout.

    Existují příklady obsažené v komentářích o použití skriptu, takže by mělo být docela snadné zjistit.

    Scénář

    @ECHO OFF ECHO Vymazat podle data Pattern ECHO Napsal: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Smazat / vybrat soubory na základě data, které využívá MM a / nebo DD pro vzory pojmenování souborů. Použití REM REM: REM DeleteByDatePattern / M | / D NumberToKeep Cesta PatternPrefix PatternPostfix [/ L | / DEL] REM / M Určuje použitý vzor je založen na měsících. REM / D Určuje použitý vzorec založený na dnech. REM NumberToKeep REM Počet měsíců (/ M) nebo dnů (/ D), které mají být zachovány, včetně aktuálního. REM Například zadání 1 udrží pouze aktuální měsíc / den a 6 bude udržovat aktuální mínus 5. REM Path Kořenové umístění pro hledání. Zobrazí se podadresáře. REM PatternPrefix REM Vzor hledání souborů umístěný před měsícem / dnem při vytváření vyhledávacího řetězce. REM PatternPostfix REM Vzor vyhledávání souborů umístěný po měsíci / dne při vytváření vyhledávacího řetězce. REM / L (volitelně) Zobrazí seznam všech souborů odpovídajících vzoru, ale nevymaže je. REM / DEL (volitelně) Odstraní všechny soubory odpovídající vzoru. REM REM Příklady: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ? log / DEL REM Odstraní všechny soubory protokolu IIS (Windows Server 2003) kromě aktuálního a předchozích dvou měsíců. REM DeleteByDatePattern / D 7 "D: Zálohování" * - ???? - ?? - .zip / DEL REM Odstraní všechny soubory zip ze složky D: Zálohování s výjimkou aktuálního týdne. REM Výše ​​uvedený název souboru je "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Vytiskne seznam všech souborů na jednotce C odpovídající vzoru: * -MM- * "(kde MM je nahrazeno 01-12) REM DeleteByDatePattern / D 14" C: Logy "Log - ???? .txt REM Vytiskne seznam všech vzorků, které by skript zpracoval. SETLOCAL EnableExtensions EnableDelayedExpansion REM Předpokládá, že nastavení data a času systému Windows jsou nastaveny na formát "DayOfWeek M / D / YYYY". REM Pokud je váš formát jiný, budete muset změnit níže uvedené proměnné tak, aby byly zarovnány. FOR / F "žetony = 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET Měsíc = %% B SET Den = %% C SET Rok = %% D) / I % 1 == / M (SET Keep =% Měsíc% SET Max = 12) IF / I % 1 == / D (SET MAX = 28 REM Doba přemístění ... přidat více podle potřeby IF / I% Rok% EQU 2012 SET Max = 29 IF / I% Rok% EQU 2016 SET Max = 29) IF / I! Prevmonth EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET Max = 30 IF / I! / I! Prevmonth! EQU 11 SET Max = 30) SET Proud =% Udržet% SET / A Ponechat =% Keep% -% 2 + 1 REM Určit rozsah, který chcete odstranit. SET / A RemoveHighStart =% Aktuální% + 1 IF / I% Keep% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Keep% +% Max% -1) SET RemoveHighEnd =% Max%) REM Proveďte všechny menší než nízké rozpětí. FOR% L %% Z IN (1,1,% RemoveLow%) DO PROVOZ: Proces %% Z% 3% 4% 5% 6 REM Proveďte vše větší než vysoký rozsah. Proces:%% Z% 3% 4% 5% 6 ENDLOCAL GOTO Konec: Proces klávesy SET = 0% 1 klíč SET =% Klíč: ~ -2% SET Target = "% ~ 2% ~ 3% Klíč %% ~ 4" ECHO Cílový vzorec:% Target% IF / I % 5 == / I % 5 == / DEL DEL / F / S / Q% Cíl% GOTO Konec: Konec

    Automatizace procesu

    Příkaz FORFILES je nativní pro systém Windows, ale skript DeleteByDatePattern by měl být umístěn ve složce definované ve vaší proměnné Cesta (například ve složce Windows), takže ji lze nazvat jako přirozený příkaz. Jakmile to provedete, můžete vytvořit naplánovaný úkol, který je buď jediným příkazem (pokud potřebujete odstranit pouze z jednoho místa) nebo dávkový soubor (pokud potřebujete odstranit z více umístění), který běží denně, týdenně, měsíčně nebo kdykoliv.

    Ještě jedna věc, kterou můžete zapomenout.

    Odkazy

    Ke stažení Vymazat podle data Pattern skript ze Sysadmin Geek