Forum Programmation.shell [Bash] effacer le plus ancien répertoire

Posté par  .
Étiquettes :
0
7
fév.
2007
Bonjour à tous,

je suis en train de me monter un serveur sous fedora et j'effectue une sauvegarde tous les soirs d'un répertoire de synchro.
La sauvegarde tourne sur 20 jours: le soir j'efface le dernier répertoire, je renomme tous les autres pour décaler la numérotation (ils sont nommés JourJ-1, JourJ-2, ...etc... ) et je recrée le numéro 1 qui contiendra la sauvegarde du jour.

Je pense qu'il serait plus pratique pour la gestion que je nomme mes répertoires en fonction de la date, je fait donc un mkdir `date '+%d-%m-%Y'`.

Ceci ne pose pas de problème particulier sauf pour ce qui est de supprimer le répertoire le plus ancien. Malgré tous mes efforts je ne trouve pas comment faire.

A votre avis comment pourrais je m'y prendre?

Merci
  • # man find

    Posté par  . Évalué à 1.

    avec les options atime ou mtime devrait pouvoir t'aider.

    sinon un bete calcul date_a_supprimer=date du jour - 20 jour
    • [^] # Re: man find

      Posté par  . Évalué à 1.

      j'était parti la dessus mais il se trouve que la sauvegarde n'a pas forcement lieu tous les jours mais seulement quand des fichiers ont été modifiés dans le répertoire de synchronisation et de fait le simple calcul J-20 ne fonctionne pas, il me faudrai arriver à trouver le répertoire le plus ancien.

      merci de la réponse

  • # 2-3 suggestions

    Posté par  . Évalué à 3.

    Bonjour,

    Je te propose:
    1) De changer le nommage des répertoire en AAAA-MM-DD (+%Y-%m-%d) car avec cette méthode, le premier repertoire donné en ordre "alphabétique" sera le plus ancien :-)

    2) D'utiliser la commande "ls -ltd /chemin/*" pour trier par rapport à la date (voir laquelle est utilisée, à priori la date de dernière modification) et là, le dernier (ou si tu rajoutes l'option "-r", le premier) [à confirmer quand même :P] est celui qui est le plus ancien :-)

    3) Enfin, mon préféré, le find :-)
    ===
    find /chemin -type d -mtime +20 -maxdepth 1
    ===
    (-maxdepth est pour la profondeur de recherche)

    Bon courage !

    Cdlt,
  • # Avec ls, ça fonctionne...

    Posté par  . Évalué à 3.

    J'ai testé ça :
    J'ai créé plusieurs répertoires, nommés rep1 à rep9, dans l'ordre...
    Au prompt, quand je tape :
    $ rm -r $(ls -t | tail -1)
    Au premier lancement, ça me gicle rep1 (normal, c'est le plus vieux).
    Au second rep2, etc.
    Arrivé à rep4, je suis allé dans rep5, j'y ai créé un fichier (touch plop), et je suis redescendu d'un niveau.
    la commande citée ci-dessus, lancée successivement, m'a dans l'ordre supprimé rep6, rep7, rep8, rep9 puis rep5 en dernier.
    Il me semble donc que ça correspond à ce que tu demandes...
    • [^] # Re: Avec ls, ça fonctionne...

      Posté par  . Évalué à 3.

      Bonjour,

      je viens de faire quelques tests et il semble que cela fonctionne, en plus cela me permet de simplifier considérablement mon script. :)

      Je vais poursuivre les tests.


      En tout cas merci beaucoup


      --
      Glut

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.