ScriptsPerso/Nettoyage
Modifié par john le 2025/05/25 00:32
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"
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 :
- 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