0 Votes

Code source wiki de ScriptsPerso/Nettoyage

Version 2.4 par john le 2025/05/24 23:13

Masquer les derniers auteurs
john 2.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.3 16 ----
john 2.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.3 25 ----
john 2.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.3 66 ----
john 2.1 67
68 == Astuces supplémentaires ==
69
70 * Pour un système graphique, on peut aussi nettoyer les miniatures GNOME :
71 {{code language="bash"}} rm -rf ~/.cache/thumbnails/*
72 {{/code}}
73
74 * Pour les utilisateurs de Docker :
75 {{code language="bash"}} docker system prune -af
76 {{/code}}
77
john 2.3 78 ----
john 2.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.3 87 ----
john 2.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.3 96 ----
john 2.1 97
98 == Automatiser avec `cron` ==
99
100 Pour exécuter le nettoyage tous les dimanches à 6h :
101
102 1. Modifier la crontab :
103 {{code language="bash"}} crontab -e
104 {{/code}}
105
106 2. Ajouter la ligne suivante :
107 {{code language="bash"}} 0 6 * * 0 /chemin/vers/nettoyage.sh
108 {{/code}}
109
john 2.3 110 ----
john 2.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.3 120 ----
john 2.1 121
122 == Liens utiles ==
123
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
127
john 2.3 128 ----
john 2.1 129
130 == Liens internes ==
131
john 2.3 132 * [[Retour aux scripts personnels>>doc:TutosLinux.ScriptsPerso.WebHome]]