Pagina principala » HOWTO » Automatizarea procesului de ștergere a fișierelor istorice vechi

    Automatizarea procesului de ștergere a fișierelor istorice vechi

    Multe servicii și programe acolo produc fișiere de jurnal ca o pistă de audit pentru tot ceea ce fac, cu toate acestea puțini au o funcție care elimină aceste fișiere, deoarece acestea își depășesc utilitatea. Ca rezultat, aceste fișiere de jurnale stau pe sistemul dvs. consumând spațiu (uneori mai mult decât știi) și aglomerând directoarele pentru acele momente în care trebuie să le accesezi.

    Deci, dacă nu aveți nevoie de aceste fișiere, de ce să le păstrați? Vă vom arăta cum să eliminați cu ușurință aceste fișiere istorice vechi pentru a vă menține sistemul frumos și ordonat.

    Desigur, în timp ce acoperim mai jos sunt imediat utile pentru gestionarea fișierelor jurnal, puteți aplica aceleași tehnici și pentru orice alt tip de fișier "expirat" (cum ar fi copii de rezervă).

    Eliminați fișierele bazate pe ultima dată modificată

    Dacă doriți să ștergeți fișierele jurnal existente numai pe baza ultimei modificări a fișierului, tot ce trebuie să faceți este să utilizați comanda FORFILES. De exemplu:

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

    Comanda de mai sus va șterge toate fișierele din dosarul "C: LogFiles" și toate subdosajele care nu au fost modificate în ultima săptămână.

    Comanda FORFILES este destul de flexibilă cu funcțiile de căutare și date. De exemplu, în locul unui număr, puteți introduce o dată, cum ar fi "-1/13/2010", pentru a șterge fișierele modificate ultima dată înainte de data specificată.

    Pentru a obține toate detaliile despre ceea ce pot face FORFILES, vizualizați ajutorul online folosind următoarea comandă din linia de comandă:

    FORFILES /?

    Eliminați fișierele bazate pe un model de dată în numele fișierului

    Multe aplicații și servicii generează fișiere log pe baza unui model de dată ca să aibă un fișier log pe zi (adică Log100113.txt, Backup-2010-01-13.zip, etc.). Pentru aceste tipuri de fișiere, este preferabil să ștergeți pe baza datei fișierului încorporat în numele fișierului, și nu ultima dată modificată. Acest lucru este util pentru scenarii cum ar fi păstrarea tuturor fișierelor de jurnal pentru ultimele 3 luni. Din păcate, Windows nu are o comandă nativă cu acest tip de logică, dar cu un script batch putem rezolva cu ușurință această sarcină.

    Există exemple incluse în comentariile de utilizare a scriptului, așa că ar trebui să fie destul de ușor să dai seama.

    Scriptul

    @CHO OFF ECHO Șterge după dată Model ECHO Scris de: Jason Faulkner ECHO SysadminGeek.com ECHO. ECOU. REM Delete / Selectarea fișierelor pe baza unei date care utilizează MM și / sau DD pentru modelele de denumire a fișierelor. Utilizarea REM REM: REM DeleteByDatePattern / M | / D Calea NumToKeep PatternPrefix PatternPostfix [/ L | / DEL] REM / M Specifică faptul că modelul utilizat se bazează pe luni. REM / D Specifică faptul că modelul utilizat se bazează pe zile. REM NumberToKeep REM Numărul de luni (/ M) sau zile (/ D) pe care trebuie să le păstrați, inclusiv cel curent. REM De exemplu, introducerea 1 păstrează doar luna / zi curentă și 6 va păstra actuala minus 5. Calea REM Locația rădăcinii pentru căutare. Subdirectoarele vor fi căutate. REM PatternPrefix REM Modelul de căutare a fișierelor plasat înainte de lună / zi când se construiește șirul de căutare. REM PatternPostfix REM Modelul de căutare a fișierelor plasat după luna / ziua când se construiește șirul de căutare. REM / L (opțional) Listează toate fișierele care se potrivesc cu modelul, dar nu le șterge. REM / DEL (opțional) Șterge toate fișierele care se potrivesc cu modelul. REM REM Exemple: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? Jurnal / DEL REM Șterge toate fișierele jurnal IIS (Windows Server 2003) cu excepția celor două luni anterioare și a celor anterioare. REM DeleteByDatePattern / D 7 "D: Backup" * - ???? - ?? - .zip / DEL REM Șterge toate fișierele zip din dosarul D: Backup, cu excepția săptămânii curente. REM Numele modelului de fișier asumat mai sus este "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Imprimă o listă a tuturor fișierelor de pe unitatea C care se potrivește cu modelul: * -MM- * "(unde MM este înlocuit cu 01-12) REM DeleteByDatePattern / D 14" C: Jurnal "Jurnal - ???? .txt REM Tipărește o listă cu toate modelele care vor fi procesate de script. SETLOCAL EnableExtensions EnableDelayedExpansion REM Se presupune că setările de dată / oră Windows sunt setate la formatul "DayOfWeek M / D / YYYY". REM Dacă formatul dvs. este diferit, va trebui să modificați variabilele de mai jos pentru a le alinia. FOR = F "= 1,2,3,4 delims = /" %% A IN ('DATE / T') DO (SET Luna = %% B SET Ziua = %% C SET An = / I % 1 == / M (SET Păstrați =% Lună% SET Max = 12) IF / I % 1 == / D (SET MAX = 28 REM) Salturi anuale ... adaugati mai mult dupa cum este necesar IF / I% Anul% EQU 2012 SET Max = 29 IF / I% Anul% EQU 2016 SET Max = 29) IF / I! PrevMonth! EQU 4 SET Max = 30 IF / I! PrevMonth! EQU 6 SET Max = 30 IF / I! EQU 11 SET Max = 30) Curent SET =% Păstrați% SET / A Păstrați =% Păstrați% -% 2 + 1 REM Determinați intervalul care trebuie eliminat. SET / A RemoveHighStart =% Curent% + 1 IF / I% Păstrați% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Păstrați% +% Max% -1) SET RemoveHighEnd =% Max%) REM Procesați tot mai puțin decât domeniul redus. FORMULAT / L %% Z IN (1,1,% RemoveLow%) Apel: Procesul %% Z% 3% 4% 5% 6 REM Procesați tot mai mult decât intervalul mare. PORNIRE: Procesul %% Z% 3% 4% 5% 6 ENDLOCAL GOTO Sfarsit: Procesare tasta SET = 0% 1 Tasta SET = tasta%: ~ -2% SET Target = "% ~ 2% ~ 3% cheie %% ~ 4" Modelul țintă ECHO:% Target% IF / I % 5 == / L DIR% Target% / I % 5 == / DEL DEL / F / S / Q% Țintă% GOTO Sfârșit: Sfârșit

    Automatizarea procesului

    Comanda FORFILES este nativă pentru Windows, dar scriptul DeleteByDatePattern ar trebui să fie plasat într-un folder definit în variabila Path (cum ar fi folderul Windows) astfel încât să poată fi apelat ca și cum ar fi o comandă nativă. Odată ce acest lucru este făcut, puteți crea o sarcină programată care este fie o singură comandă (dacă trebuie doar să ștergeți dintr-o singură locație), fie un fișier batch (dacă trebuie să ștergeți din mai multe locații) care rulează zilnic, săptămânal, lunar ori de câte ori.

    Încă un lucru pe care îl poți seta și uita.

    Link-uri

    Descărcați Șterge după dată Model de script de la Sysadmin Geek