Bash - Clean with find old file
Ce script en bash supprime des fichiers plus anciens qu’un nombre de jours spécifié dans un répertoire cible, selon un modèle de nom de fichier défini par l’utilisateur, avec une option d’exclusion pour certains motifs.
Auteur : CBillet
Version : 1.1
Date de création : 2024-10-30
Contact : N/A
Introduction
Le script clean_old_file.sh
est conçu pour automatiser la suppression de fichiers anciens dans un répertoire spécifique. Il utilise des options configurables pour déterminer l’âge des fichiers, le modèle de nom, et le répertoire cible. Le script enregistre les actions effectuées avec des informations détaillées (timestamp, ID unique) pour des besoins de journalisation.
Pour télécharger le script, suivez ce lien : clean_old_file.sh
Usage
Exécutez le script en ligne de commande en utilisant le format suivant :
./clean_old_file.sh [OPTIONS]
Options disponibles
-m, --maxage <jours>
: Nombre de jours maximum avant suppression (obligatoire).-p, --pattern <pattern>
: Filtre de nom des fichiers à supprimer, par exemple*.log
outoto.*
(obligatoire).-d, --dir <répertoire>
: Répertoire cible contenant les fichiers à supprimer (obligatoire).-e, --exclude <pattern>
: Motif pour exclure certains fichiers de la suppression (peut être utilisé plusieurs fois).-f, --force
: Supprime sans confirmation.-q, --quiet
: Mode silencieux, n’affiche pas les messages d’exécution.-h, --help
: Affiche la page d’aide et les exemples d’utilisation.
Exemples d’Utilisation
Suppression de fichiers nommés “toto.*” plus anciens que 30 jours :
./clean_old_file.sh -m 30 -p "toto.*" -d /home/corentin/test/
Suppression de tous les fichiers du jour et d’avant sans confirmation :
./clean_old_file.sh -m 0 -p "*" -d /home/corentin/test/ -f -q
Suppression de fichiers ``.log`` plus anciens que 10 jours dans ``/var/logs`` en excluant les fichiers ``.bak`` et ceux contenant “old” :
./clean_old_file.sh -m 10 -p "*.log" -d /var/logs/ -e "*.bak" -e "*old*"
Description des Options
maxage
: Définit le nombre de jours maximum pour les fichiers à conserver. Mettre 0 pour inclure les fichiers du jour.pattern
: Spécifie un modèle de nom, tel que*.log
ou*
pour inclure tous les fichiers.dir
: Chemin du répertoire contenant les fichiers à supprimer.exclude
: Permet d’exclure certains fichiers selon un modèle donné. Plusieurs motifs peuvent être ajoutés en utilisant l’option plusieurs fois.
Fonctionnement du Script
Le script utilise la commande find
pour identifier les fichiers répondant aux critères définis par les options. Un mode verbose est activé par défaut pour afficher les fichiers à supprimer. Si l’option --quiet
est utilisée, le script fonctionne sans affichage, mais toutes les actions sont enregistrées.
Journalisation
Les actions du script sont enregistrées avec un ID unique basé sur le timestamp. Les logs sont écrits dans le système avec un tag SCRIPT
.
Notes
Avant d’exécuter ce script en production, vérifiez attentivement les paramètres pour éviter la suppression accidentelle de fichiers importants.