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 :

Archivage et condition


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Par défaut Archivage et condition
    Salut,

    Suite à un espace disque saturé sur une machine d’intégration. Je souhaite faire un archivage automatique mensuel (lancement du script via crontab).

    Je suis donc parti sur une script de compression .tar.bz2 pour un meilleur gain de place.
    Le hic, je voudrais qu'il m'archive tout les fichiers >30J en excluant certain dossier/fichier (extension particulière).
    Et nettoyer ce qui est archivé, le script étant exécuter une fois mensuellement.

    J'ai commenté là où je calle pour la fonction des >30J

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    #Archivage.sh
    EXT=  # type de fichier
    NOM= 	#nom de fichier
     
    for i in /home/dossier/aaa; do
    tar -cjf  /home/dossier/aaa/$NOM.tar.bz2 --exclude '/home/dossier/aaa/bbb' /home/archive <= #fonction de date pour archiver les fichiers >30J
    rm #nettoyage des fichiers archivers > 30J
    done
    Tous les fichiers ont le même entête, incrémenter soit du numéro de jour de l'année en extension, soit de la date.

    Ce qui donne TESTINT.054 TESTINT.055 ou TESTINT.20130227....Je suis parti à archiver puis nettoyer, je sais que je pourrai faire aussi un move suivi de ma compression, mais dans tout les cas j'aurai un RM pour nettoyer les fichiers ajoutés à l'archive.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    Bonjour,

    je chercherais et exclurais les fichier souhaités avec find, dont j'enverrais la sortie à tar :
    Code non-éprouvé : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -mtime ... | tar -cjf tonArchive -T -
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Par défaut
    Dans mon man j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -daystart Mesurer les temps (avec -amin, -atime, -cmin, -ctime, -mmin, et -mtime) depuis le début de la journée plutôt que depuis 24 heures.
    Cela prendrai donc la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    find /mondossier/ -name $NAME -mtime 30 | tar -cjf  /home/dossier/aaa/$NOM.tar.bz2 | rm -f   #si nom spécifique
    find /mondossier/ -type $EXT -mtime 30 | tar -cjf  /home/dossier/aaa/$NOM.tar.bz2 | rm -f   #si fichier excel
    Si je comprends bien que mtime compte le nombre de jour par rapport à la date actuel.

    Je pense qu'ill me manque une condition aussi sur le RM aussi, ou coupler avec le FIND ainsi il va m'effacer les fichiers trouvés (j'utilise rarement find couplé à rm par sécurité)

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    Par défaut
    Bonjour,

    ATTENTION: le -type de find n'a aucun rapport avec l'extension d'un fichier, ici on parle du type sur un point de vu système:
    pour fichier ordinaire


    pour répertoire
    Etc...

    Cordialement.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 660
    Par défaut
    et, deux find, oui, mais, un pour archiver, et un autre (± identique) pour -exec rm \+.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Par défaut
    Merci encore une fois pour votre aide bien explicative à tous les deux

    Je partage quand même le final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    #Archivage.sh
    #EXT=  # type de fichier par extension
    NAME= 	#nom de fichier
    find /mondossier/ -type f $NAME -mtime 30 | echo tar -cjf  /home/dossier/aaa/$NOM.tar.bz2 #recherche fichier puis compression
    find /mondossier/ -type f $NAME -mtime 30 | echo rm -f   #recherche fichier puis delete
    Juste à retirer les echo

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2014, 17h43
  2. [MYSQL] conditions et requetes
    Par sebos63 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 16h41
  3. Condition sur debug et release
    Par xave dans le forum MFC
    Réponses: 3
    Dernier message: 04/02/2004, 15h04
  4. Condition et contenu TImage
    Par Detlev_linux dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2003, 01h00
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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