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 :

trie par champ contenant une date


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut trie par champ contenant une date
    Bonjour,

    Ci-joint une liste de fichiers avec inscrit dans le nom de chaque fichier la date

    IMPERMEABLEVERT.20100304-000501.sql.gz
    IMPERMEABLEVERT.20100308-000501.sql.gz
    IMPERMEABLEVERT.20100309-000501.sql.gz
    IMPERMEABLEVERT.20100310-000501.sql.gz
    IMPERMEABLEVERT.20100310-193046.sql.gz
    etc..
    content.20100301-000501.tgz
    content.20100302-000501.tgz
    content.20100303-000501.tgz
    content.20100310-000501.tgz
    content.20100310-193046.tgz
    etc...
    mysql.20100308-000501.sql.gz
    mysql.20100309-000501.sql.gz
    mysql.20100310-000501.sql.gz
    mysql.20100310-193046.sql.gz
    etc...

    La date est sous ce format : 20100304 20100303 20100301

    Je dois tarer tous les fichiers du repertoire tous les jours. Et garder les fichiers.tar 10 jours.

    Ces fichiers (les x.sql.gz, x.tgz et .sql.gz) restent au moins 10 jours dans ce répertoire.

    Si je compresse une copie de tous les fichiers le 1er jour, comment faire pour que le 2ème jour je ne compresse que les nouveaux fichiers ?
    Même chose le 3 ème jour etc...
    Cela sur un cycle de 10 jours.

    Merci d' avance

  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
    en gros :
    Code "pseudo-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
    # Chaque jour : ce script doit être exécuté par cron (voire anacron)
     
    # backup='fichiers.tar'
     
    # si $backup existe
       # calculer son âge (depuis la dernière modification) en jours
    # sinon
       # son âge vaut 10
    # finsi
     
    # si l'âge de $backup est supérieur à zéro et inférieur à 10
       # ajouter les nouveaux fichiers du répertoire
    # sinon
       # sauver tous les fichiers du répertoire (ce qui écrasera la version précédente (si elle existe))
    # finsi
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    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
    un cron avec find :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gzip -d backup$(date +%Y%m%d).tar.gz && find /repertoire -type f -name "cequetuveux" -mtime 1 -exec tar uf backup$(date +%Y%m%d).tar {} \; && gzip backup$(date +%Y%m%d).tar
    ajoutera a la asauvegarde tous fichiers de moins de 24heures d'age au fichier backup

    et un autre cron purgera les fichiers de sauvegardes de plus de 10jours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /repertoire -type f -name "cequetuveux" -mtime +10 -exec rm -f {} \;

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut
    Merci à vous tous

  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
    Voici le code que j'ai décrit plus haut :
    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
    #!/bin/bash
     
    srcRep='/chemin/ton_repertoire_source'
    backup='fichiers.tar'
     
    if[ -f "$backup" ]; then
       backupDate=$(( ( $(date +%s) - $(stat -c %Y $backup) ) / 86400 ))
    else
       backupDate=10
    fi
    if [ $backupDate -gt 0 -a $backupDate -lt 10 ]; then
       echo "tar --append -vf $backup $(LANG=C tar --diff -f $backup $srcRep/* 2>&1 | awk -F': ' '$0 !~  /Error/ {print $2 }')"
    else
       echo "tar -cvf $backup $SrcRep/*"
    fi
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [AC-2010] Maximum d'un champ contenant une date
    Par vincent3556 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 01/10/2013, 09h56
  2. Réponses: 2
    Dernier message: 26/12/2008, 15h59
  3. Réponses: 2
    Dernier message: 19/04/2006, 11h29
  4. AGREGAT PAR RAPPORT A UNE DATE
    Par Chap$ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/03/2004, 10h32
  5. Supprimer un fichier par rapport a une date
    Par NewB dans le forum Linux
    Réponses: 2
    Dernier message: 25/06/2003, 13h44

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