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 :

Regroupement par blobs


Sujet :

Linux

  1. #1
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut Regroupement par blobs
    Bonjour,

    Dans un contexte d'archivage, je voudrais regrouper des blobs par paquet de 100000 et les tarer ?

    Avez-vous une idée sur comment faire?

  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
    les blobs attaques la plage !!!!!!!!!!!!!!!*

    heu c'est quoi un blob ? un bloc de données ?

    =========

    mais sur le principe si un blob = 1 fichier ou 1 fichier = n blobs (n constant)
    il suffit de faire un script qui boucle sur l'analyse des fichiers qui les archives en tar avec horodatage et compression par exemple...


    ===========

    *référence culturelle pas si obscur que ça...

  3. #3
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Effectivement, dans mon cas, les blobs sont des fichiers d'extraction de la base.
    1 fichier=1Blob.

    En gros, j'ai des milliers de fichiers et je veux les "tarer" par paquet de 100 000.

    Voilà mon besoin.

  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
    tu peux aussi si ça t'arrange faire par taille de fichier plustot que par lot de n fichiers....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar -cf – dbbackup.db | split -b 700m – db_backup.tar
    ça fera des fichiers tar de 700m maximum chacuns només db_backup.taraa, db_backup.tarab, db_backup.tarac etc...


    ====================


    sinon par lots de fichiers,

    faut compter les boucles sur un principe du style : à adapter/tester/améliorer
    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
     
    count=0
    numfichier=0
    while [ $numfichier -lt 100000 ] ; do
     ls | while read 
     do
       tar upf truc.$count.$(date +%Y%m%d).tar $REPLY
       numfichier=$((numfichier + 1))
     done 
     count=$(($count + 1)) # pour numeroter les fichiers tar
     numfichier=0 # pour compter les fichiers dans chaque tar
    done
    # essayer de finir proprement
    rm /tmp/liste &
    for i in *.tar ; do gzip $i ; done &
    unset ..... # un par variables

  5. #5
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Merci beaucoup.

    Dans mon cas, je dois passer par le 2eme exemple, je testerai.

    Merci encore une fois.

  6. #6
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    par contre pour le 1er exemple, ça restera toujours valable si j'ai un ensemble de fichier à "tarer" (en gros mon entrée c'est un dossier qui les contient)et pas un fichier de type ".db" ?

  7. #7
    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
    oui ça marche aussi avec des répértoires "entiers"

  8. #8
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    J'ai en fait deux petites questions pour le 2eme exemple:
    1- 'numFichier' doit etr incrémenté par 10 000 ou par 1 ?
    2- 'ls | while read' c'est quoi son role tant qu'on est deja dans le boucle?







    Citation Envoyé par frp31 Voir le message
    tu peux aussi si ça t'arrange faire par taille de fichier plustot que par lot de n fichiers....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar -cf – dbbackup.db | split -b 700m – db_backup.tar
    ça fera des fichiers tar de 700m maximum chacuns només db_backup.taraa, db_backup.tarab, db_backup.tarac etc...


    ====================


    sinon par lots de fichiers,

    faut compter les boucles sur un principe du style : à adapter/tester/améliorer
    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
     
    count=0
    numfichier=0
    while [ $numfichier -lt 100000 ] ; do
     ls | while read 
     do
       tar upf truc.$count.$(date +%Y%m%d).tar $REPLY
       numfichier=$((numfichier + 1))
     done 
     count=$(($count + 1)) # pour numeroter les fichiers tar
     numfichier=0 # pour compter les fichiers dans chaque tar
    done
    # essayer de finir proprement
    rm /tmp/liste &
    for i in *.tar ; do gzip $i ; done &
    unset ..... # un par variables

  9. #9
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Dans ton exemple, on va parcourir toujours les memes fichiers,
    y'a pas une décrémentation de 100000 oubliée par hasard ?



    Citation Envoyé par frp31 Voir le message
    tu peux aussi si ça t'arrange faire par taille de fichier plustot que par lot de n fichiers....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar -cf – dbbackup.db | split -b 700m – db_backup.tar
    ça fera des fichiers tar de 700m maximum chacuns només db_backup.taraa, db_backup.tarab, db_backup.tarac etc...


    ====================


    sinon par lots de fichiers,

    faut compter les boucles sur un principe du style : à adapter/tester/améliorer
    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
     
    count=0
    numfichier=0
    while [ $numfichier -lt 100000 ] ; do
     ls | while read 
     do
       tar upf truc.$count.$(date +%Y%m%d).tar $REPLY
       numfichier=$((numfichier + 1))
     done 
     count=$(($count + 1)) # pour numeroter les fichiers tar
     numfichier=0 # pour compter les fichiers dans chaque tar
    done
    # essayer de finir proprement
    rm /tmp/liste &
    for i in *.tar ; do gzip $i ; done &
    unset ..... # un par variables

  10. #10
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Voici une solution beaucoup plus simple pour les interessés:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
     
     
      #positionnement dans le répertoire 
       cd $DIR			
        #Nb de fichiers par archive
         N=100000 #à remplacer par le nombre que vous voulez
         s=""
         i=0
         j=0
         for f in `ls *.txt` #à remplacer par le filtre qui va bien
         do
        i=$((i+1))
        s=$s" "$f
        if [ $i -eq $N ]
        then
            j=$((j+1))
             tar -c -f archive_$j.tar $s
            i=0
            s=""
        fi
       done  
      # Ce petit bout de code c'est à rajouter pour finir les fichiers restants (si N=5 et on 12 fichiers, 2 fichiers vont rester=> ce petit bout de code rajoute les 2 fichiers restants)
     
       i=$((i+1))
       s=$s" "$f
       if [ $i -ne $N ]
       then
        j=$((j+1))
          tar -c -f archive_$j.tar $s
     
    	  else
    		echo $RED_COLOR"La compression des fichiers d'archive a échoué!"$INITIAL_COLOR
    	  fi
       fi

  11. #11
    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
    Citation Envoyé par waouni Voir le message
    Dans ton exemple, on va parcourir toujours les memes fichiers,
    y'a pas une décrémentation de 100000 oubliée par hasard ?
    oui surement c'est juste les grandes lignes comme ça pour le principe... mais bon quelqu'un a répondu en améliorant le truc...

  12. #12
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Oui c'est moi ce quelqu'un

    Merci beaucoup

    Citation Envoyé par frp31 Voir le message
    oui surement c'est juste les grandes lignes comme ça pour le principe... mais bon quelqu'un a répondu en améliorant le truc...

  13. #13
    Membre averti
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Bonjour,

    Dans mon algo, quand j'arrive à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tar -c -f archive_$j.tar $s
    J'ai un problème de "The parametre List is to long" vu que je fais regroupement de 100 000 fichiers.

    Avez vous une idée sur comment résoudre ce problème ?


    Merci d'avance

Discussions similaires

  1. Regroupement par quinzaine (1->15,16->31)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/01/2006, 12h16
  2. [Requête] Regroupement par mois en cours
    Par Burnout dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/01/2006, 09h36
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 17h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

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