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

Linux Discussion :

Shell script archivage vieux fichiers .log


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Points : 47
    Points
    47
    Par défaut Shell script archivage vieux fichiers .log
    Bonjour,

    J'ai commencé un script me permettant d'archiver des fichiers ".log" vieux de X jours, explication :

    - Dans une arborescence, chercher les dossier "log",
    - Si dans ce dossier "log", il y a des fichiers ".log" vieux de X jours, les archiver,
    - Déplacer cette archive dans une arborescence bis en recréant les dossiers de l’arborescence de base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
     
    for folder in $(find . -name log -type d ) # Pour chaque dossiers "log" trouvé.
    do :
    	for file in $(find $folder *.log -mtime +30) # Pour chaque dossier log contenant des fichiers ".log" vieux de +30jours.
        do :
    		tar czf archive-log.tar.gz $folder/*.log # Archiver les fichiers ".log".
    	done
     
    	if [ -e $folder/*.tar.gz ] # Si une archive existe.
             then mv $folder/*.tar.gz $ARCHIVE # Déplacer l'archive.
        fi
     
    done
    $folder/*.log --> je ne peux faire comme ça, ne fonctionne pas.

    Avez-vous une alternative à me proposer ?

    Je vous remercie d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 631
    Points : 30 865
    Points
    30 865
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LuffyyffuL Voir le message
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	for file in $(find $folder *.log -mtime +30) # Pour chaque dossier log contenant des fichiers ".log" vieux de +30jours.

    $folder/*.log --> je ne peux faire comme ça, ne fonctionne pas.

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	for file in $(find $folder -name "*.log" -mtime +30) # Pour chaque dossier log contenant des fichiers ".log" vieux de +30jours.
    En plus tu l'avais bien mis l'option sur la ligne du dessus

    Citation Envoyé par LuffyyffuL Voir le message
    - Déplacer cette archive dans une arborescence bis en recréant les dossiers de l’arborescence de base.

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [ -e $folder/*.tar.gz ] # Si une archive existe.
             then mv $folder/*.tar.gz $ARCHIVE # Déplacer l'archive.
        fi
    Tu es sûr que le code correspond à l'énoncé ? Pourquoi tu testes "*.tar.gz" alors que tu connais le nom de l'archive (en plus test ne sait pas gérer l'étoile). Pourquoi même testes-tu si l'archive existe alors que tu viens de la créer ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    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,

    les boucles for, les tests, etc, doivent être dans le -exec du find, jamais le contraire : on ne fait pas for elem in $(commande) !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Script nettoyage des fichiers log + Temp + historique
    Par hackmed dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/05/2015, 15h26
  2. [Batch] exporter le deroulement du script dans un fichier log
    Par Xbase dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 12/03/2015, 20h59
  3. besoin d'aide pour un script shell extrayant les données d'un fichier texte ou un fichier log
    Par haithem20080 dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 15/03/2010, 15h10
  4. [shell] effacer les vieux fichiers
    Par bigcortex dans le forum Linux
    Réponses: 2
    Dernier message: 04/08/2007, 12h18
  5. [shell script] parser un fichier en colonne
    Par Blo0d4x3 dans le forum Linux
    Réponses: 11
    Dernier message: 22/04/2007, 12h38

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