OVH Cloud OVH Cloud

simple script shell

4 réponses
Avatar
Giuseppe
Bonjour,

Je souhaite écrire un script shell qui

- compte l'espace occupé par les fichiers de type .tar dans un
répertoire donné

- s'ils occupents plus de X Mb, effacer le plus ancien

Quelles fonctions utiliser ou où touver de l'aide?

Merci pour votre précieuse aide!

4 réponses

Avatar
william
On Sun, 16 May 2004 19:30:47 +0200, Giuseppe wrote:

Bonjour,

Je souhaite écrire un script shell qui

- compte l'espace occupé par les fichiers de type .tar dans un
répertoire donné

- s'ils occupents plus de X Mb, effacer le plus ancien

Quelles fonctions utiliser


"find" pour rechercher
"rm" pour supprimer
"du" pour compter l'espace disque utilisé

ou où touver de l'aide?


dans les manuels en questions.

mais logrotate est sans doute plus adapter si c'est pour le faire
régulièrement dans le temps


--
William.

Avatar
Rakotomandimby Mihamina
bonjour

Il n'y a pas de fonction predefinies en shell ( a proprement parler )

pour voir la taille occupee par un fichier , tu peu directement
apprendre sed et awk et utiliser la sortie de "ls -l"

pour les dates , tu peux faire aussi avec la sortie de ls -l , ou alors
avec des options de "find" ( man find )

trouve un bon tutoriel awk et sed ( tu en aura besoin dans ta vie
d'admin , je te le dis ) et pour les sscript , un bon debut est le
tutoriel de chez lea-linux.org , mais il est en bash . Les spé (enfin ..
ceux que je connais ) du script shell recommandent d'utiliser zsh ( bash
est vieux a ce qu'il parait )

--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://stko.dyndns.info/site_principal/Members/mihamina
Avatar
Giuseppe
Merci à tous pour vos réponses!

Je me suis en train d'essayer de stocker dans une variable l'espace
total occupé par l'ensemble des fichiers .tar de /myfolder/.

Dans le shelle, si je fais
stat -c +%s /myfolder/*.tar ¦ xargs

J'obtiens un truc style
+29789092 +29721092 +19689092

J'ai pensé que je peu exploiter cela, mais comment?

J'ai essayé
total_size=$((stat -c +%s /myfolder/*.tar ¦ xargs))
mais la syntaxe est mauvaise...

que modifier?

Ensuite, deuxième étape, j'aimerai comparer dans un "if" si total_size
est supérieur à une valeur prédéfinie et si c'est le cas je vais effacer
le fichier le plus ancien que je récupère avec
ls -tr /myfolder/*.tar ¦ head -1

est-ce une manière de procéder envisageable?

Merci pour votre aide?

Giuseppe


Giuseppe wrote:

Bonjour,

Je souhaite écrire un script shell qui

- compte l'espace occupé par les fichiers de type .tar dans un
répertoire donné

- s'ils occupents plus de X Mb, effacer le plus ancien

Quelles fonctions utiliser ou où touver de l'aide?

Merci pour votre précieuse aide!



Avatar
no_spam
On Sun, 16 May 2004 23:29:51 +0200, Giuseppe wrote:

Merci à tous pour vos réponses!

Je me suis en train d'essayer de stocker dans une variable l'espace
total occupé par l'ensemble des fichiers .tar de /myfolder/.

Dans le shelle, si je fais
stat -c +%s /myfolder/*.tar | xargs

J'obtiens un truc style
+29789092 +29721092 +19689092


total_size=`du -ck /myfolder/*.tar | tail -n 1 | sed s/ttotal// `
Il y a surement mieux...

Ensuite, deuxième étape, j'aimerai comparer dans un "if" si total_size
est supérieur à une valeur prédéfinie et si c'est le cas je vais effacer
le fichier le plus ancien que je récupère avec
ls -tr /myfolder/*.tar | head -1


if [ $total_size -gt $limit ] ; then
rm -f `ls -tr /myfolder/*.tar | head -1` ;
fi