Srcipt test poid de fichier

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. Modérateur
    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
    1. 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
      1. 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