Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 18h04   #1
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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?
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 12h58   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 538
Points : 7 754
Points : 7 754
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...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2011, 13h29   #3
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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.
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 14h10   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 538
Points : 7 754
Points : 7 754
tu peux aussi si ça t'arrange faire par taille de fichier plustot que par lot de n fichiers....

Code :
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 :
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
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/12/2011, 14h24   #5
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
Merci beaucoup.

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

Merci encore une fois.
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 14h28   #6
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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" ?
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 15h27   #7
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 538
Points : 7 754
Points : 7 754
oui ça marche aussi avec des répértoires "entiers"
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 10h53   #8
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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 :
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 :
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 11h13   #9
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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 :
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 :
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 10h53   #10
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
Voici une solution beaucoup plus simple pour les interessés:

Code :
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/01/2012, 16h21   #11
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 538
Points : 7 754
Points : 7 754
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...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 17h49   #12
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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...
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 11h37   #13
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
Bonjour,

Dans mon algo, quand j'arrive à:

Code :
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h19.


 
 
 
 
Partenaires

Hébergement Web