Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Script de calcul de la taille de plusieurs répertoires
Aller à la navigation
Aller à la recherche
Script
[modifier | modifier le wikicode]- Affichage progressif des tailles par sous-dossier.
- Total général précis en octets converti automatiquement en Mo ou Go lisibles.
- Fichier horodaté contenant tout le rapport.
#!/bin/bash
# ============================================
# Script : taille_repertoires.sh
# Objectif : afficher et enregistrer la taille
# de tous les sous-répertoires d’un dossier donné
# Affichage en temps réel + horodatage fichier + total précis
# Compatible : Ubuntu / Linux / Bash
# ============================================
# Si aucun argument n'est donné, on prend le dossier courant
DOSSIER=${1:-.}
# Supprime un éventuel slash final pour éviter les doubles //
DOSSIER="${DOSSIER%/}"
# Génère un fichier de sortie horodaté
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FICHIER_SORTIE="taille_repertoires_${DATE}.txt"
# En-tête d'information
echo "Calcul des tailles dans : $DOSSIER"
echo "Résultats enregistrés dans : $FICHIER_SORTIE"
echo
# Affichage progressif + écriture dans le fichier
echo "Taille des sous-répertoires de : $DOSSIER" | tee "$FICHIER_SORTIE"
echo "-----------------------------------------" | tee -a "$FICHIER_SORTIE"
# du en temps réel pour chaque sous-dossier
stdbuf -oL du -sh "$DOSSIER"/*/ 2>/dev/null | tee -a "$FICHIER_SORTIE"
echo "-----------------------------------------" | tee -a "$FICHIER_SORTIE"
# Total général : conversion précise
TOTAL_BYTES=$(du -sb "$DOSSIER"/*/ 2>/dev/null | awk '{sum+=$1} END {print sum}')
# Conversion en Go si > 1 Go, sinon Mo
if [ "$TOTAL_BYTES" -ge 1073741824 ]; then
TOTAL=$(echo "scale=2; $TOTAL_BYTES/1073741824" | bc)
UNIT="Go"
else
TOTAL=$(echo "scale=2; $TOTAL_BYTES/1048576" | bc)
UNIT="Mo"
fi
echo "Total général des sous-répertoires : $TOTAL $UNIT" | tee -a "$FICHIER_SORTIE"
echo "-----------------------------------------" | tee -a "$FICHIER_SORTIE"
echo "Date du rapport : $(date)" | tee -a "$FICHIER_SORTIE"
exit 0
💡 Utilisation
[modifier | modifier le wikicode]- Rendre le script exécutable :
chmod +x taille_repertoires.sh
- Lancer le script sur un dossier :
./taille_repertoires.sh /var/data