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 POSIX Discussion :

shell script d'archivage de logs


Sujet :

Shell et commandes POSIX

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Par défaut shell script d'archivage de logs
    Bonjour,

    J'essaie de faire un script me permettant d'archiver des fichiers .log se trouvant dans des dossiers "log".

    Étant débutant dans ce domaine, je vais vous exposer tout ça en détail :

    1 - Chercher dans une arborescence les dossiers "log",
    2 - Dans chaque dossiers, compter le nombre de fichiers .log,
    3 - Si les fichiers sont vieux de X jours, les compresser dans une archive,
    4 - Déplacer l'archive vers une arborescence identique bis.

    Exemple de l'arborescence :

    /home/arbo1/dossier1/dossier2/log

    Arborescence bis qui devra se créer :

    /home/arbo2/dossier1/dossier2/log

    Code :

    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name log -type d -exec echo '{}' +
    J'ai bien le chemin de mes dossiers "log" qui est retourné.

    2 - Comment aller dans le path retourné des dossier logs ?
    Sinon quand j'y vais à la main, j'ai bien le nombre de fichiers retourné.

    3 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find *.log -mtime +30 -exec gzip log.tar {} \;
    De ce côté, mes logs sont compressés un à un, alors que je veux une archive globale.

    4 - Comment dire qu'on veut recréer l'arborescence principale dans un dossier source bis (arbo2/dossier1/dossier2/log) afin de déplacer cette archive dans le dossier log de l'arborescence bis ? Comment récupérer qu'une partie du path avec pwd ?

    J'avais en tête de créer une fonction pour toutes ces étapes et de faire une boucle for pour chaque dossier "log" appeler cette fonction.

    Merci d'avance

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find............... | xargs tar uvpf /chemin/bidule.$(date +%Y%m%d).tar
    tu auras chaque répertoire dans ton tar ...

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Par défaut
    merci pour la réponse.

    Je ne veux pas archiver tout mes répertoires log en une seule.

    Mais faire des archives des .log et de les déplacer dans une arborescence bis.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin/ -type f -name "*.log" -exec mv {} /autre/chemin/ \;
    par contre si il faut aussi créer une nouvelle arborescence ça ne peut pas se faire un une passe il faut alors faire un petit script pour que ça puisse marché.

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for folder in $(find . -name log -type d )
    do :
        ls -A $folder| wc -l
        tar -czf $folder.tar.gz $(find $folder *.log -mtime +30)
        mv $folder.tar.gz $chemin-archive
    done
    J'arrive à créér une archive du dossier "log" qui a des fichiers ".log" vieux de 30jours. Mais le script s'arrête dès qu'il a trouvé un dossier ayant de vieux ".log", s'il y a d'autres dossiers "log" avec de vieux ".log" il ne va pas les archiver.

    Par contre s'il trouve un dossier "log" avec des ".log" trop récents, il passe bien au suivant.

    Après ce que j'essaie de faire, ce n'est pas de compresser le dossier contenant une arborescence avec un dossier "log" et des fichiers ".log" vieux de X jours, mais de compresser les fichiers ".log" dans une archive.

Discussions similaires

  1. Shell script archivage vieux fichiers .log
    Par LuffyyffuL dans le forum Linux
    Réponses: 2
    Dernier message: 31/12/2011, 12h39
  2. Executer en tant que en shell script ?
    Par fabszn dans le forum Linux
    Réponses: 3
    Dernier message: 13/01/2006, 15h08
  3. shell script depuis c
    Par 03011226 dans le forum C
    Réponses: 10
    Dernier message: 08/12/2005, 18h56
  4. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49
  5. Retour de requete postgresql / Shell Script
    Par doohan dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/06/2003, 18h07

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