Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 18/05/2008, 12h33   #1
Invité de passage
 
Inscription : mai 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 2
Points : 0
Points : 0
Par défaut script shell répartition de fichiers en tar

Salut à tous,

Je cherche à répartir des fichiers d'un répertoire en N fichiers .tar ?
Les fichiers doivent être répartis équitablement en taille avant de faire le tar.

J'ai commencé à écrire mais ça donne des fichiers tar compressés trop différents en taille.

#$1 correspond à N fichiers tar que je veux générer
a=0
for i in `ls -l tmp/* | sort +4 -n`
do
a=`expr $a + 1`
echo $i >> file`expr $a % $1`
done
tar cvf -`cat $file `| gzip > /tmp/$file.tar.gz

Si quelqu'un a une idée ...

Thanks!
mikadoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 17h48   #2
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 502
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 502
Points : 9 685
Points : 9 685
Bonjour,

Je ne pense pas que tu puisses le faire simplement en une seule passe.

Le plus simple est de calculer la taille totale des fichiers à archiver, puis de calculer quelle doit être la taille moyenne de chaque archive. Ensuite, tu écris un script qui liste les fichiers, et tu les archives tant que la taille moyenne n'est pas atteinte. Si elle est atteinte, tu crées l'archives, et tu passes à la suivante.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 21h14   #3
Invité de passage
 
Inscription : mai 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 2
Points : 0
Points : 0
Merci pour ta reponse, mais en fait, l'idée c'est de lancer le tar gz sur plusieurs process en parallèle.
Il faut donc que je tri et classe les fichiers avant.
Si par exemple, dans /tmp on a
200 Toto_1.txt
190 Toto_2.txt
180 Toto_3.txt
100 Toto_4.txt
80 Toto_5.txt
50 Toto_6.txt
30 Toto_7.txt
10 Toto_8.txt
5 Toto_9.txt

Si on défini N=3 on génére donc 3 fichiers file1, file2, file3
-comme les fichiers sont déjà tri par taille décroissante dans /tmp - il faudra que
file1 récupere Toto_1.txt
file2 récupere Toto_2.txt
file3 récupere Toto_3.txt ensuite

file2 récupere Toto_4.txt
file3 récupere Toto_5.txt
file1 récupere Toto_6.txt ensuite

file3 récupere Toto_7.txt
file1 récupere Toto_8.txt
file2 récupere Toto_9.txt ect...

Le problème, c'est que je ne vois pas comment faire la rotation des fichier $file dans la boucle for ?
mikadoo 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 01h29.


 
 
 
 
Partenaires

Hébergement Web