0 Votes

Code source wiki de ScriptsPerso/Nettoyage

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

Masquer les derniers auteurs
john 1.1 1 = Script de nettoyage système =
2
3 {{toc/}}
4
5 == Présentation ==
6
7 Ce script permet de **nettoyer un système Linux** en supprimant :
8 - les caches d’utilisateur,
9 - les paquets inutiles,
10 - les fichiers temporaires,
11 - les vieux fichiers journaux,
12 - et autres éléments obsolètes.
13
14 Il est conçu pour être **sûr**, **verbeux**, et **personnalisable**.
15
john 2.1 16 ----
john 1.1 17
18 == Objectifs ==
19
20 * Libérer de l’espace disque
21 * Éviter les lenteurs causées par des accumulations inutiles
22 * Prévenir les erreurs d’espace faible (`disk full`)
23 * Réduire le bruit dans les sauvegardes automatiques
24
john 2.1 25 ----
john 1.1 26
27 == Exemple de script complet ==
28
29 {{code language="bash"}}
30 #!/bin/bash
31
32 set -euo pipefail
33
34 LOG="$HOME/nettoyage_$(date +%F).log"
35 echo "Début du nettoyage : $(date)" | tee "$LOG"
36
37 # 1. Nettoyage des caches utilisateur
38 echo "Nettoyage du cache utilisateur (~/.cache)" | tee -a "$LOG"
39 rm -rf ~/.cache/* >> "$LOG" 2>&1 || true
40
41 # 2. Nettoyage des paquets orphelins (Debian/Ubuntu)
42 if command -v apt &>/dev/null; then
43 echo "Nettoyage apt (autoclean, autoremove)" | tee -a "$LOG"
44 sudo apt autoclean -y >> "$LOG" 2>&1
45 sudo apt autoremove -y >> "$LOG" 2>&1
46 fi
47
48 # 3. Nettoyage DNF (RHEL/Fedora)
49 if command -v dnf &>/dev/null; then
50 echo "Nettoyage dnf" | tee -a "$LOG"
51 sudo dnf clean all -y >> "$LOG" 2>&1
52 sudo dnf autoremove -y >> "$LOG" 2>&1
53 fi
54
55 # 4. Suppression des fichiers temporaires
56 echo "Suppression de /tmp" | tee -a "$LOG"
57 sudo rm -rf /tmp/* /var/tmp/* >> "$LOG" 2>&1 || true
58
59 # 5. Nettoyage des anciens journaux
60 echo "Nettoyage des journaux (>7 jours)" | tee -a "$LOG"
61 sudo journalctl --vacuum-time=7d >> "$LOG" 2>&1 || true
62
63 echo "Nettoyage terminé : $(date)" | tee -a "$LOG"
64 {{/code}}
65
john 2.1 66 ----
john 1.1 67
68 == Astuces supplémentaires ==
69
70 * Pour un système graphique, on peut aussi nettoyer les miniatures GNOME :
john 2.1 71 {{code language="bash"}} rm -rf ~/.cache/thumbnails/*
john 1.1 72 {{/code}}
73
74 * Pour les utilisateurs de Docker :
john 2.1 75 {{code language="bash"}} docker system prune -af
john 1.1 76 {{/code}}
77
john 2.1 78 ----
john 1.1 79
80 == Sécuriser les suppressions ==
81
82 Pour éviter les suppressions accidentelles :
83 - Toujours **tester d’abord avec `echo`**
84 - Utiliser `rm -i` pour confirmation
85 - Ajouter `--dry-run` pour des commandes comme `rsync` ou `apt`--
86
john 2.1 87 ----
john 1.1 88
89 == Journalisation ==
90
91 Le script ci-dessus crée un **log daté** dans `$HOME`, ce qui permet de :
92 - Vérifier les erreurs
93 - Auditer les nettoyages passés
94 - Automatiser sans crainte (par cron)
95
john 2.1 96 ----
john 1.1 97
98 == Automatiser avec `cron` ==
99
100 Pour exécuter le nettoyage tous les dimanches à 6h :
101
102 1. Modifier la crontab :
john 3.1 103 {{code language="bash"}} crontab -e
john 1.1 104 {{/code}}
105
106 2. Ajouter la ligne suivante :
john 3.1 107 {{code language="bash"}} 0 6 * * 0 /chemin/vers/nettoyage.sh
john 1.1 108 {{/code}}
109
john 2.1 110 ----
john 1.1 111
112 == À adapter selon votre distribution ==
113
114 |= Distribution |= Commande principale |
115 | Debian / Ubuntu | `apt`, `journalctl`, `dpkg` |
116 | Fedora / RHEL   | `dnf`, `journalctl` |
117 | Arch Linux      | `pacman -Rns $(pacman -Qtdq)` |
118 | Alpine Linux    | `apk cache clean` |
119
john 2.1 120 ----
john 1.1 121
122 == Liens utiles ==
123
john 3.1 124 * Systemd journalctl vacuum https~://www.freedesktop.org/software/systemd/man/journalctl.html#--vacuum-size=)--//
125 * GNU `rm` documentation https~://man7.org/linux/man-pages/man1/rm.1.html)//
126 * ShellCheck https~://www.shellcheck.net) pour analyser les scripts//
john 1.1 127
john 2.1 128 ----
john 1.1 129
130 == Liens internes ==
131
132 * [[Retour aux scripts personnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]]
john 3.1 133 * [[Retour à l’accueil>>doc:Wiki Batcave John.WebHome]]