Srcipt test poid de fichier

vitcz Messages postés 46 Statut Membre -  
vitcz Messages postés 46 Statut Membre -
Bonjour a tous,

je ne trouve pas l'argument qui test le volume (poids, taille..) d'un fichier compresser avant un envoi ftp pour automatiser une archive : ça ressemblerais à cela :

#!/bin/bash

if [ $filename1.tar.gz -e size > 100Mo ]; then

ftp 00.00.00.00 <<EOF
bin
cd REP
send $filename1.tar.gz
quit
bye
EOF

exit 1
elif [ ! -e "$1" ]; then
echo "fichier trop volumineux"
exit 1
fi; done;

merci pour les pistes.
Configuration: Windows Vista
Firefox 3.0

3 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    taille=$(du -sh fichier.txt)
    et ensuite tu tu utilises la valeur contenu par la variable taille
    voir man du pour voir si tu veux utiliser -h ou -H
    0
  2. vitcz Messages postés 46 Statut Membre 3
     
    Merci lami20j,

    alors si j'ai bien compris :
    du - estimate file space usage : attributs de taille (c'est ce que je ne trouvais pas)

    -s ignore les poids des fichiers ou dossiers sous-jacents,
    -f affiche en langage dis humain c'est a dire en Mo avec l'unité derrière la valeur.
    là on lui prefere --si d'apres mes premiers tests.

    Mais j'ai un problème dans ma syntaxe : car pour différencier, il faut utiliser les expressions arithmétiquesd u style ((a <= b)) then ... Or si ma variable $taille me sors en langage Human, alors il ne s'agit plus de chiffre mais de chaine de caractere dirait on...donc les comparaterus arythmétique ne fonctionnent pas....si je n'utilise pas -h ni -H ni --ssi, alors il faut que je code mes 100Mo en octes est ce que cela fait bien ... ( 100x1024x1024 = 104 857 600) ?

    Je m'en remet aux expert développeurs ? J'imagine que c'est une problématique ancestrale et résolut. Merci pour vos lumières.

    mes scripts de test ressemblent a cela :

    #debut du script1

    taille=$(du --si filename.tar.gz)

    if (($taille >= 104 857 600)); then

    echo "ne peut etre envoyé"

    exit 1
    fi;

    #fin du scirpt

    OU

    #debut du script 2

    taille=$(du --si filename.tar.gz)

    if [$taille >= 100M] ; then

    echo "ne peut etre envoyé"

    exit 1
    fi;

    #fin du scirpt
    0
  3. vitcz Messages postés 46 Statut Membre 3
     
    Bonjoru a tous,

    Alors j'ai un peu avancé mais je bloque encore avec ce script qui dois tester le poid d'un fichier avant son envoi :

    #!/bin/bash
    #debut script------------------------

    taille=$(du -sm $filename1.tar.gz |awk '{print $1}')

    ftp $hostftp <<EOF
    bin
    cd $dossierftp
    send $filename1.tar.gz
    quit
    bye
    EOF
    echo "le fichier a été envoyé"
    else
    echo "le fichier est trop lourd, merci de supprimer des fichierss"
    exit;
    fi;
    #finscript-------------------------------------------
    0