Page d'accueil » comment » Automatisation du processus de suppression d'anciens fichiers journaux

    Automatisation du processus de suppression d'anciens fichiers journaux

    De nombreux services et programmes produisent des fichiers journaux sous forme de piste d'audit pour tout ce qu'ils font. Cependant, rares sont ceux qui ont une fonction qui supprime ces fichiers, car ils perdent leur utilité. En conséquence, ces fichiers journaux sont stockés sur votre système, occupant un espace disque (parfois plus important que vous ne le savez) et encombrant de répertoires pour les moments où vous devez y accéder..

    Donc, si vous n'avez pas besoin de ces fichiers, pourquoi les conserver? Nous allons vous montrer comment supprimer facilement ces anciens fichiers journaux pour que votre système reste bien rangé..

    Bien sûr, bien que les fonctions décrites ci-dessous soient immédiatement utiles pour la gestion des fichiers journaux, vous pouvez également appliquer les mêmes techniques à n’importe quel autre type de fichier «expirant» (tel que les sauvegardes)..

    Supprimer les fichiers en fonction de la date de dernière modification

    Si vous souhaitez effacer vos fichiers journaux existants en vous basant uniquement sur la date de dernière modification du fichier, il vous suffit d'utiliser la commande FORFILES. Par exemple:

    FORFILES / P “C: Fichiers de log” / S / D -7 / C “CMD / C DEL / F / Q @PATH”

    La commande ci-dessus effacerait tous les fichiers du dossier «C: LogFiles» et tous les sous-dossiers non modifiés au cours de la dernière semaine..

    La commande FORFILES est assez flexible avec les fonctions de modèle de recherche et de date. Par exemple, à la place d'un numéro, vous pouvez entrer une date telle que "-1/13/2010" pour supprimer les fichiers modifiés en dernier avant la date spécifiée..

    Pour obtenir tous les détails sur ce que FORFILES peut faire, affichez l'aide en ligne à l'aide de la commande suivante à partir de l'invite de commande:

    FORFILES /?

    Supprimer des fichiers en fonction d'un modèle de date dans le nom de fichier

    De nombreuses applications et services produisent des fichiers journaux basés sur un modèle de date pour qu’ils contiennent un fichier journal par jour (par exemple, Log100113.txt, Backup-2010-01-13.zip, etc.). Pour ces types de fichiers, il est préférable de supprimer en fonction de la date du fichier incorporé dans le nom du fichier plutôt que de la date de dernière modification. Ceci est utile pour des scénarios tels que la conservation de tous les fichiers journaux des 3 derniers mois. Malheureusement, Windows n'a pas de commande native avec ce type de logique, mais avec un script batch, nous pouvons facilement gérer cette tâche..

    Il y a des exemples inclus dans les commentaires sur l'utilisation du script, il devrait donc être assez facile de comprendre.

    Le scénario

    @ECHO OFF ECHO Modèle de suppression par date ECHO Ecrit par: Jason Faulkner ECHO SysadminGeek.com ECHO. ÉCHO. REM Supprimer / sélectionner des fichiers en fonction d'une date utilisant MM et / ou DD pour les modèles de dénomination de fichier. REM REM Utilisation: REM DeleteByDatePattern / M | / D NumberToKeep Path PatternPrefix PatternPostfix [/ L | / DEL] REM / M Spécifie que le modèle utilisé est basé sur les mois. REM / D Spécifie que le modèle utilisé est basé sur les jours. REM NumberToKeep REM Nombre de mois (/ M) ou de jours (/ D) à conserver, y compris le courant. REM Par exemple, entrer 1 ne conserve que le mois / jour actuel et 6 conserverait le moins moins 5. Chemin REM. Emplacement racine de la recherche. Les sous-répertoires seront recherchés. REM PatternPrefix REM Le modèle de recherche de fichier placé avant le mois / jour lors de la création de la chaîne de recherche. REM PatternPostfix REM Le modèle de recherche de fichier placé après le mois / jour lors de la création de la chaîne de recherche. REM / L (facultatif) Répertorie tous les fichiers correspondant au modèle, mais ne les supprime pas. REM / DEL (facultatif) Supprime tous les fichiers correspondant au modèle. REM REM Exemples: REM DeleteByDatePattern / M 3 "% WinDir% system32LogFiles" ex ?? ??. log / DEL REM Supprime tous les fichiers journaux IIS (Windows Server 2003) à l'exception du mois actuel et des deux mois précédents. REM DeleteByDatePattern / D 7 "D: Sauvegarde" * - ???? - ?? - .zip / DEL REM Supprime tous les fichiers zip du dossier D: Backup à l'exception de la semaine en cours. REM Le modèle de nom de fichier supposé ci-dessus est "* -YYYY-MM-DD.zip" REM DeleteByDatePattern / M 0 "C:" * () * / L REM Imprime une liste de tous les fichiers du lecteur C correspondant au modèle: " * -MM- * "(où MM est remplacé par 01-12) REM DeleteByDatePattern / D 14" C: Logs "Log - ???? .txt REM Imprime une liste de tous les modèles qui seraient traités par le script. SETLOCAL EnableExtensions EnableDelayedExpansion REM Suppose que vos paramètres Date / Heure Windows sont définis sur le format "DayOfWeek M / D / YYYY". REM Si votre format est différent, vous devrez modifier les variables ci-dessous afin qu'elles s'alignent. FOR / F "jetons = 1, 2, 3, 4 delims = /" %% A IN ("DATE ​​/ T") DO (SET Mois = %% B SET Jour = %% C SET Année = %% D) IF / I % 1 == / M (SET Garder =% Mois% SET Max = 12) SI / I % 1 == / D (SET Garder =% Jour% SET SET = 31 REM Travaillant SET / A PrevMonth =% Mois% -1 Si! PrevMonth! EQU 2 (SET Max = 28 REM Années bissextiles… ajoutez-en si nécessaire. IF / I% Année% EQU 2012 SET Max = 29 IF / I% Année% 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 Courant =% Conserver% SET / A Conserver =% Conserver% -% 2 + 1 REM Détermine la plage à supprimer. SET / A RemoveHighStart =% Current% + 1 IF / I% Conserver% LSS 1 (SET RemoveLow = 0 SET / A RemoveHighEnd =% Conserver% +% Max% -1) ELSE (SET / A RemoveLow =% Conserver% -1 SET RemoveHighEnd =% Max%) REM Traite tous les niveaux inférieurs à la plage inférieure. FOR / L %% Z IN (1,1,% RemoveLow%) DO CALL: Traitez %% Z% 3% 4% 5% 6 REM Traitez tous plus grand que la plage haute. FOR / L %% Z IN (% RemoveHighStart%, 1,% RemoveHighEnd%) DO CALL: Processus %% Z% 3% 4% 5% 6 EndLOCAL GOTO Fin: Process SET clé = 0% 1 SET clé =% clé: ~ -2% SET Target = "% ~ 2% ~ 3% Clé %% ~ 4" Motif cible ECHO:% Target% IF / I % 5 == / L DIR% Target% / B / S IF / I % 5 == / DEL SUPPR / F / S / Q% cible% GOTO End: End

    Automatiser le processus

    La commande FORFILES est native de Windows, mais le script DeleteByDatePattern doit être placé dans un dossier défini dans votre variable Path (tel que votre dossier Windows) afin de pouvoir être appelé comme s'il s'agissait d'une commande native. Ceci fait, vous pouvez créer une tâche planifiée qui consiste en une seule commande (si vous n’avez besoin que de supprimer d’un seul emplacement) ou un fichier de commandes (si vous devez supprimer de plusieurs emplacements) qui s’exécute quotidiennement, hebdomadairement, mensuellement. ou chaque fois.

    Une dernière chose que vous pouvez définir et oublier.

    Liens

    Téléchargez le script de suppression selon le modèle de date depuis Sysadmin Geek