Script de purge sous linux

Bonjour,

Explication du contexte...
J'ai des switchs CISCO qui envoient leur configuration sur un serveur tftp automatiquement a chaque modification de celle ci sur l'equipement.
L'objectif est de garder seulement 5 sauvegardes, soit les 5 plus recentes.
La forme du nom des fichiers est:
switch01-421--Mar--1-1993-01-03-34.974-GMT-0
Où "switch01" correspond au nom de l'equipement; "421" represente l'usine où est l'equipement (qui pourrait etre supprimé); ensuite la date, et tout a la fin un numero d'increment (le numero d'increment repart a "0" a chaque reboot de l'equipement.
Sur le serveur tftp, j'ai un repertoire par usine... soit une arboressence:
serveur-tftp/421
/533
/679

Note importante, il peut y avoir 50 sauvegardes du meme equipement en une journée comme une seule par an...
L'idée serait de programmer un tache cron tous les jours, qu'elle scanne le repertoire "serveur-tftp" (recursivement) et que dans chaque repertoire elle garde seulement les 5 dernieres sauvagerdes de chaque equipement...

alors ca fait un moment que j'ait pas fait de bash ou autre script... donc je viens vers vous pour savoir comment faire cette fameuse boucle, et le decoupage de nom de fichiers (ou utilisation de la date de creation de fichier) pour pouvoir selectionner les fichiers a garder ou effacer...

PS : j'espere etre dans la bonne categorie pour poster...

Merci

8 réponses

  1. Salut,
    voila une commande qui affiche tous les fichiers d'un répertoire sauf les 4 fichiers les plus récents :
    find . -maxdepth 1 -type f -printf "%T@ %p\r\n" | sort | awk '{print $2 }'| head -n -4


    Bonne continuation.
    1
    1. Contributeur
      Salut,

      Sur quel système ? Unix ou Gnu/Linux ?
      Quel shell ?
      0
      1. C'est une CentOS 5.4

        Mouarfffffff sacré commande ^^ bon je vais testé ca... et puis après il faut que j'arrive a faire une recherche récursive sur plusieurs répertoires...
        Et il faut aussi que je prene le debut du nom de fichier en compte, car il y a plusieurs switch sauvegardés dans un seul répertoire...

        Merciiiii :)
        0
        1. Contributeur
          hello
          faut-il se baser sur la date du fichier ou sur celle contenue dans le nom ?
          0
          1. Ben c'est normalement la meme... il faut utilisé la facon la plus simple possible... mais ne pas oublié qu'il faut prendre en compte le debut du nom de fichier... donc 2 paramètres...

            merci...
            0
            1. Contributeur
              donc dans le répertoire 421, garder les 5 plus récents switch01, switch02, etc ?
              0
              1. Contributeur
                je testerais avec la commande de Flachy Joe dans 2 boucles
                cd serveur-tftp
                for USINE in *;do
                   cd $USINE
                   for SWITCH in $(ls switch* | sed 's/-.*$//' | sort -u); do
                       find . -maxdepth 1 -iname "$SWITCH*" -type f -printf "%T@ %p\r\n" | sort | awk '{print $2 }'| head -n -4
                   done
                   cd ..
                done
                
                0