IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Ne conserver que les 5 derniers fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre expérimenté

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 815
    Points : 1 350
    Points
    1 350
    Billets dans le blog
    2
    Par défaut Ne conserver que les 5 derniers fichiers
    bonsoir a tous

    j'ai un petit script sh qui s’occupe de faire des exportation sql du mon base de donnée façon aléatoire

    je cherche un script sh pour gérer la rétention de mes Fichiers du façon a conserver que les 5 derniers Fichiers

    Qui peut m'aider sur ce besoin

    merci pour nos experts

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 539
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Bonjour,

    c'est une demande récurrente; tu aurais dû trouver quelques éléments de réponse en cherchant un peu.
    STFW!

    nous fournissons de l'aide, et pas des scripts complets à la demande.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 343
    Points : 121
    Points
    121
    Par défaut
    j'ai essayer avec cette méthode mais ca pas marché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    #!/bin/bash 
    pg_dump  -U postgres   -p 5432 -F c -b -v -d dirco> /home/backup_sgbd/backup/dirco_`date +%d-%m-%Y"_"%H_%M_%S`.backup
     
    find /home/backup_sgbd/backup  -type f -mtime +5 -exec rm -f  "{}" ";"
    Quia une idée c'est quoi l'erreur exactement

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    la méthode la plus simple à mon gout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /bin/ls -1QAt | tail -n+5 | xargs rm -f
    • préciser /bin/ls permet de s'affranchir des options éventuelles définies dans le bashrc
    • -1 n'affiche qu'un fichier par ligne
    • -Q encadre les noms de fichiers avec des quotes (pour les noms avec des espaces)
    • -A empêche l'affichage de . et ..
    • -t trie les fichiers par date de dernière modification
    • tail -n+5 retient tout sauf les 5 premiers fichiers (les plus récents donc)

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 539
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Citation Envoyé par man find
    mtime n : Fichier dont les données ont été modifiées il y a n*24 heures.
    cf. man find
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Ce qui est dommage ici, c'est que si tu avais un bon nommage de fichier au départ, tu n'aurais pas tout ces soucis...

    Il vaut mieux utiliser un nommage avec un format de date en YYYMMJJ qu'en JJMMYYYY car dans le bon sens, on aura la même chose pour un tri numérique que pour un tri alphabétique, et comme le globbing * de bash fait un tri alphabétique (en locale C), on simplifie pas mal le problème.
    Cordialement.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par NULL008 Voir le message
    j'ai essayer avec cette méthode mais ca pas marché
    Ma boule de cristal est chez le réparateur: je n'arrive pas à savoir de quelle manière ça n'a pas marché.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash 
    pg_dump  -U postgres   -p 5432 -F c -b -v -d dirco> /home/backup_sgbd/backup/dirco_`date +%d-%m-%Y"_"%H_%M_%S`.backup
     
    find /home/backup_sgbd/backup  -type f -mtime +5 -exec rm -f  "{}" ";"
    D'après l'affichage de ton code dans ton post, il semble qu'il pourrait y avoir un caractère invisible devant le "find". As-tu édité ou transféré ton fichier sous Windows?

    Quia une idée c'est quoi l'erreur exactement
    Il n'y a que toi qui peux avoir une idée car on n'a pas ton écran sous les yeux (et ma boule de cristal est chez le réparateur).

  8. #8
    Membre régulier
    Homme Profil pro
    test
    Inscrit en
    Mai 2016
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : test
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Mai 2016
    Messages : 343
    Points : 121
    Points
    121
    Par défaut
    bon merci bien

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Pour le fun, une version qui se base sur la date dans le nom du fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $ ls -ltr
    total 0
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_20-10-2018_00_20_12.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-11-2018_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-12-2018_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-02-2019_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-01-2019_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_20-10-2020_00_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_20-06-2022_00_20_13.backup
    $ perl -we '$i=1; unlink map { s/_(\d+)-(\d+)-(\d+)/_$3-$2-$1/ ; $i++ > 5 ? $_ : () } sort { $b cmp $a } map { s/_(\d+)-(\d+)-(\d+)/_$3-$2-$1/ ; $_ } glob "*"'
    $ ls -ltr
    total 0
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-12-2018_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-02-2019_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_19-01-2019_23_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_20-10-2020_00_20_13.backup
    -rw-rw-r-- 1 disedorgue disedorgue 0 sept. 20 00:20 dirco_20-06-2022_00_20_13.backup
    Cordialement.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2016, 00h59
  2. Ne conserver que les derniers enregistrements modifiés
    Par ALOUBALOU dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/09/2008, 23h15
  3. Réponses: 5
    Dernier message: 25/01/2008, 21h26
  4. Ne conserver que les N enregistrement les plus récents.
    Par gomodo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/01/2008, 20h46
  5. N'avoir que les noms de fichier via la commande ls -l
    Par fde_amadeus dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 26/10/2006, 19h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo