Główna » jak » Automatyzacja procesu usuwania starych plików dzienników

    Automatyzacja procesu usuwania starych plików dzienników

    Wiele usług i programów generuje pliki dziennika jako ścieżkę audytu dla wszystkiego, co robią, jednak tylko nieliczni posiadają funkcję, która usuwa te pliki, gdy przeżywają ich użyteczność. W rezultacie te pliki dziennika są przechowywane w systemie, zajmują więcej miejsca (czasem więcej niż wiesz) i katalogi są zaśmiecone, gdy potrzebujesz dostępu do nich.

    Więc jeśli nie potrzebujesz tych plików, dlaczego je przechowujesz? Pokażemy, jak z łatwością usunąć stare pliki dziennika, aby system był miły i uporządkowany.

    Oczywiście, chociaż opisane poniżej są natychmiast przydatne do zarządzania plikami dziennika, można również zastosować te same techniki do każdego innego typu "wygasającego" pliku (takiego jak kopie zapasowe).

    Usuń pliki oparte na ostatniej zmodyfikowanej dacie

    Jeśli chcesz wyczyścić istniejące pliki dziennika na podstawie daty ostatniej modyfikacji pliku, wystarczy użyć polecenia FORFILES. Na przykład:

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

    Powyższe polecenie usunie wszystkie pliki z folderu "C: LogFiles" i wszystkie podfoldery, które nie zostały zmodyfikowane w ostatnim tygodniu.

    Polecenie FORFILES jest dość elastyczne dzięki wzorowi wyszukiwania i funkcjom daty. Na przykład w miejsce liczby można wprowadzić datę taką jak "-1/13/2010", aby usunąć pliki zmodyfikowane przed określoną datą.

    Aby uzyskać wszystkie szczegółowe informacje o tym, co może zrobić FORFILES, przejrzyj pomoc online, korzystając z następującego polecenia z wiersza polecenia:

    FORFILE /?

    Usuń pliki na podstawie wzorca daty w nazwie pliku

    Wiele aplikacji i usług tworzy pliki dziennika na podstawie wzoru daty, aby jeden plik dziennika dziennie (np. Log100113.txt, Backup-2010-01-13.zip itd.). W przypadku tego typu plików lepiej jest usunąć na podstawie daty pliku włączonego do nazwy pliku zamiast daty ostatniej modyfikacji. Jest to przydatne w przypadku scenariuszy, takich jak przechowywanie wszystkich plików dzienników z ostatnich 3 miesięcy. Niestety system Windows nie ma natywnego polecenia z tego typu logiką, ale ze skryptem wsadowym możemy z łatwością poradzić sobie z tym zadaniem.

    Istnieją przykłady zawarte w komentarzach do używania skryptu, więc powinno być całkiem łatwo dowiedzieć się.

    Scenariusz

    @ECHO WYŁ. ECHO Usuń według daty Wzór ECHO Autor: Jason Faulkner ECHO SysadminGeek.com ECHO. ECHO. REM Usuń / Wybierz pliki na podstawie daty, która wykorzystuje MM i / lub DD dla wzorców nazw plików. REM REM Sposób użycia: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Określa, że ​​stosowany wzór jest oparty na miesiącach. REM / D Określa, że ​​stosowany wzorzec jest oparty na dniach. REM NumberToKeep REM Liczba miesięcy (/ M) lub dni (/ D) do zachowania, łącznie z bieżącym. REM Na przykład wpisanie 1 zachowuje tylko bieżący miesiąc / dzień, a 6 zachowuje bieżący minus 5. Ścieżka REM Lokalizacja root do wyszukiwania. Przeszukiwane będą podkatalogi. REM PatternPrefix REM Wzorzec wyszukiwania pliku umieszczony przed miesiącem / dniem podczas budowania ciągu wyszukiwania. REM PatternPostfix REM Wzorzec wyszukiwania plików umieszczony po miesiącu / dniu podczas budowania ciągu wyszukiwania. REM / L (opcjonalnie) Wyświetla wszystkie pliki pasujące do wzorca, ale ich nie usuwa. REM / DEL (opcjonalnie) Usuwa wszystkie pliki pasujące do wzorca. REM REM Przykłady: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex? ??. log / DEL REM Usuwa wszystkie pliki dziennika IIS (Windows Server 2003) z wyjątkiem bieżącego i poprzednich dwóch miesięcy. REM DeleteByDatePattern / D 7 "D: Kopia zapasowa" * - ???? - ?? - .zip / DEL REM Usuwa wszystkie pliki zip z folderu D: Backup, z wyjątkiem bieżącego tygodnia. REM Wzorzec nazwy pliku przyjęty powyżej to "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Drukuje listę wszystkich plików na dysku C zgodnych ze wzorcem: " * -MM- * "(gdzie MM jest zastąpione 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Drukuje listę wszystkich wzorców, które zostaną przetworzone przez skrypt. SETLOCAL EnableExtensions EnableDelayedExpansion REM Zakłada, że ​​ustawienia daty / czasu systemu Windows są ustawione na format "DayOfWeek M / D / YYYY". REM Jeśli twój format jest inny, będziesz musiał zmienić poniższe zmienne, aby się wyrównać. FOR / F "tokeny = 1,2,3,4 delims = /" %% A IN ("DATA / T") DO (USTAW miesiąc = %% B USTAW Dzień = %% C SET Rok = %% D) JEŚLI / I % 1 == / M (SET Keep =% Month% SET Max = 12) IF / I % 1 == / D (SET Zachowaj =% Day% SET Maks. = 31 REM Praca poza maks. dniami poprzedniego miesiąca SET / A PrevMonth =% Miesiąc% -1 IF! PrevMonth! EQU 2 (SET Max = 28 REM lata przestępne ... dodaj więcej w razie potrzeby 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! PrevMonth! EQU 9 SET Max = 30 IF / I! PrevMonth! EQU 11 SET Max = 30) SET Current =% Keep% SET / A Keep =% Keep% -% 2 + 1 REM Określić zakres do usunięcia. SET / A RemoveHighStart =% Current% + 1 IF / I% Keep% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Zachowaj% +% Max% -1) ELSE (SET / A RemoveLow =% Zachowaj% -1 SET RemoveHighEnd =% Max%) REM Przetwarzaj wszystko poniżej niskiego zakresu. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Process %% Z% 3% 4% 5% 6 REM Przetwarzaj wszystko powyżej zakresu wysokiego. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Process %% Z% 3% 4% 5% 6 ENDLOCAL GOTO End: Process SET Key = 0% 1 SET key =% Key: ~ -2% SET Target = "% ~ 2% ~ 3% Key %% ~ 4" ECHO Target Pattern:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL DEL / F / S / Q% Target% GOTO End: End

    Automatyzacja procesu

    Polecenie FORFILES jest rodzime dla systemu Windows, jednak skrypt DeleteByDatePattern powinien zostać umieszczony w folderze zdefiniowanym w zmiennej Ścieżka (na przykład w folderze Windows), aby można było wywoływać go tak, jakby był rodzimym poleceniem. Gdy to zrobisz, możesz utworzyć zaplanowane zadanie, które jest pojedynczym poleceniem (jeśli musisz tylko usunąć z pojedynczej lokalizacji) lub plikiem wsadowym (jeśli chcesz usunąć z wielu lokalizacji), które działa codziennie, co tydzień, co miesiąc lub kiedykolwiek.

    Jeszcze jedna rzecz, którą możesz ustawić i zapomnieć.

    Spinki do mankietów

    Pobierz Skrypt Usuń według daty z Sysadmin Geek