Récupérer la taille d'un répertoire

Fermé
M3t@ - 17 févr. 2010 à 10:14
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 17 févr. 2010 à 12:05
Bonjour,
ceci n'est pas une question mais un shell que j'ai crée et je veut le partager avec vous j'esper qu'il vous aidera un jour :)
tous les commentaire sont les bienvenu, mais surtout les amélioration ;)


explication:
ce shell récupéré le taille d'un répertoire puis vérifier s'il dépasse une certaine taille (ici 1 Go) il compresse le contenu du répertoire, met le fichier comprimée (le fichier compresser porte le nom de la date de compression) dans /root et enfin il vide le répertoire
utilité:
très utile pour gérer les log sur des serveurs qui sauvegarde beaucoup de logs
-------------------------------------------cut-----------------------------------------------
#!/bin/sh

du -bs /votre_répertoire > /tmp/out.$$
SIZE=`awk '{print $1}' /tmp/out.$$`

if [ $SIZE -gt 1000000000 ]
then

DATE=$(date +%d-%m-%Y-%H-%M)
zip -r /root/${DATE}.zip /votre_répertoire
rm -fr /votre_répertoire/*
echo "logs sauvegarder et espace liberer"
echo "$?"
else
echo "espace suffisant !!!!"
echo "$?"
fi

rm /tmp/out.$$
------------------------------------------------cut-----------------------------

désoler pour les fautes d'orthographe j'ai été précis :*)

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 févr. 2010 à 11:25
Salut,

Merci déjà pour cette contribution.

Ensuite, pourquoi passer par un fichier temporaire (/tmp/out.$$) ?
Autant récupérer le résultat directement dans la variable :

SIZE=$(du -bs /votre_répertoire 2>/dev/null | awk '{print $1})


Et pour finir, le 'echo "$?"' ne sert à rien, dans la mesure où tu l'affiches après un 'echo "logs sauvegardés et espace libéré"' qui forcément dans ce cas va s'exécuter et donc renvoyer un code retour égal à 0 (vrai) ;-\

;-))
1
ok jipicy;
le 'echo "$?"' je l'avait mais pour être sur que tous va bien ;)

par contre j'ai tester votre code (il vous manque une ' apré la dernier })
---------------------------------cut-----------------------------------
SIZE=$(du -bs /votre_répertoire 2>/dev/null | awk '{print $1}')
echo $SIZE
---------------------------------cut----------------------------------

résultat:
[root@home /]# ./test.txt

Rien n'est afficher :/
merci ;)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > M3t@
17 févr. 2010 à 12:05
Je n'ai rien changé à la commande ci-dessus si ce n'est le chemin vers le répertoire (copier/coller)...

[tmpfs]$ SIZE=$(du -bs /home/jp 2>/dev/null | awk '{print $1}')

[tmpfs]$ echo $SIZE
578143309

[tmpfs]$

;-\
0
debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
17 févr. 2010 à 11:40
Bonjour,

Merci pour le code. Par soucis de stabilite, il vaudrait mieux ne pas stocker le fichier compresse dans /root, mais dans un repertoire sur une partition separee*. /var est souvent sur une partition separee et est dediee a ce genre de stockage.

Bonne journee !

*Pour connaitre les partitions sur le systeme et leur point de montage:
df
1
de rien debianhunter; merci pour l'info ;)
0