Srcipt test poid de fichier

Fermé
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 - 31 juil. 2008 à 13:14
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 - 1 août 2008 à 10:35
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.
A voir également:

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
31 juil. 2008 à 13:18
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
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 3
31 juil. 2008 à 14:36
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
vitcz Messages postés 46 Date d'inscription mardi 22 juillet 2008 Statut Membre Dernière intervention 8 septembre 2008 3
1 août 2008 à 10:35
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