If-Koubou

Automatyzacja procesu usuwania starych plików dziennika

Automatyzacja procesu usuwania starych plików dziennika (Jak)

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, ponieważ przeżywają swoją użyteczność. W rezultacie te pliki dziennika są przechowywane w systemie, zajmują więcej miejsca (czasem więcej, niż można się domyślić) i katalogi są zaśmiecone, gdy trzeba uzyskać do nich dostęp.

Więc jeśli nie potrzebujesz tych plików, dlaczego je zachowujesz? 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 wzorcowi wyszukiwania i funkcjom daty. Na przykład w miejsce liczby można wpisać 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, wyświetl pomoc online, używając 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, tak 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ą obsłużyć to zadanie.

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. REM Ścieżka 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 dzienników IIS (Windows Server 2003) z wyjątkiem bieżących 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 Keep =% Day% SET Max = 31 REM Working poza maks. dniami poprzedniego miesiąca SET / A PrevMonth =% Month% -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, co jest większe od górnego zakresu. 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 go wywołać 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