0 Votes

ScriptsPerso/Nettoyage

Modifié par john le 2026/04/16 13:58

Script de nettoyage système

Présentation

Ce script permet de nettoyer un système Linux en supprimant :
- les caches d’utilisateur,
- les paquets inutiles,
- les fichiers temporaires,
- les vieux fichiers journaux,
- et autres éléments obsolètes.

Il est conçu pour être sûr, verbeux, et personnalisable.


Objectifs

  • Libérer de l’espace disque
  • Éviter les lenteurs causées par des accumulations inutiles
  • Prévenir les erreurs d’espace faible (`disk full`)
  • Réduire le bruit dans les sauvegardes automatiques

Exemple de script complet

#!/bin/bash

set -euo pipefail

LOG="$HOME/nettoyage_$(date +%F).log"
echo "Début du nettoyage : $(date)" | tee "$LOG"

# 1. Nettoyage des caches utilisateur
echo "Nettoyage du cache utilisateur (~/.cache)" | tee -a "$LOG"
rm -rf ~/.cache/* >> "$LOG" 2>&1 || true

# 2. Nettoyage des paquets orphelins (Debian/Ubuntu)
if command -v apt &>/dev/null; then
 echo "Nettoyage apt (autoclean, autoremove)" | tee -a "$LOG"
  sudo apt autoclean -y >> "$LOG" 2>&1
  sudo apt autoremove -y >> "$LOG" 2>&1
fi

# 3. Nettoyage DNF (RHEL/Fedora)
if command -v dnf &>/dev/null; then
 echo "Nettoyage dnf" | tee -a "$LOG"
  sudo dnf clean all -y >> "$LOG" 2>&1
  sudo dnf autoremove -y >> "$LOG" 2>&1
fi

# 4. Suppression des fichiers temporaires
echo "Suppression de /tmp" | tee -a "$LOG"
sudo rm -rf /tmp/* /var/tmp/* >> "$LOG" 2>&1 || true

# 5. Nettoyage des anciens journaux
echo "Nettoyage des journaux (>7 jours)" | tee -a "$LOG"
sudo journalctl --vacuum-time=7d >> "$LOG" 2>&1 || true

echo "Nettoyage terminé : $(date)" | tee -a "$LOG"

Astuces supplémentaires

  • Pour un système graphique, on peut aussi nettoyer les miniatures GNOME :
      rm -rf ~/.cache/thumbnails/*
      
  • Pour les utilisateurs de Docker :
      docker system prune -af
      

Sécuriser les suppressions

Pour éviter les suppressions accidentelles :
- Toujours tester d’abord avec `echo`
- Utiliser `rm -i` pour confirmation
- Ajouter `dry-run` pour des commandes comme `rsync` ou `apt`


Journalisation

Le script ci-dessus crée un log daté dans `$HOME`, ce qui permet de :
- Vérifier les erreurs
- Auditer les nettoyages passés
- Automatiser sans crainte (par cron)


Automatiser avec `cron`

Pour exécuter le nettoyage tous les dimanches à 6h :

  1. Modifier la crontab :
       crontab -e
       

2. Ajouter la ligne suivante :
  0 6 * * 0 /chemin/vers/nettoyage.sh
   


À adapter selon votre distribution

 Distribution  Commande principale  
 Debian / Ubuntu  `apt`, `journalctl`, `dpkg`  
 Fedora / RHEL    `dnf`, `journalctl`  
 Arch Linux       `pacman -Rns $(pacman -Qtdq)`  
 Alpine Linux     `apk cache clean`  

Liens utiles

  • Systemd journalctl vacuum https:www.freedesktop.org/software/systemd/man/journalctl.html#vacuum-size=)
  • GNU `rm` documentation https:man7.org/linux/man-pages/man1/rm.1.html)
  • ShellCheck https:www.shellcheck.net) pour analyser les scripts

Liens internes