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 :

script shell répartition de fichiers en tar


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    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!

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 129
    Points
    28 129
    Par défaut
    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.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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 ?

Discussions similaires

  1. script shell Afficher contenu fichier
    Par kaso54 dans le forum Shell et commandes POSIX
    Réponses: 6
    Dernier message: 31/10/2008, 21h43
  2. script shell: fonction taille fichier/dossier
    Par guluk21 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/05/2008, 19h17
  3. Script Shell sur des fichiers et chaînes
    Par chris_wafer dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 29/01/2008, 22h45
  4. Exécuter un script shell via le fichier .mailrc
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/06/2007, 19h42
  5. script shell : lire un fichier et donner pour traitement au script
    Par pc974 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 14/05/2007, 15h38

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