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

De AJLSM
Aller à la navigation Aller à la recherche
  1. Affichage progressif des tailles par sous-dossier.
  2. Total général précis en octets converti automatiquement en Mo ou Go lisibles.
  3. 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]
  1. Rendre le script exécutable :
chmod +x taille_repertoires.sh
  1. Lancer le script sur un dossier :
./taille_repertoires.sh /var/data