Code source wiki de ScriptsPerso/Nettoyage
Masquer les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
![]() |
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 | |||
![]() |
2.3 | 16 | ---- |
![]() |
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 | |||
![]() |
2.3 | 25 | ---- |
![]() |
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 | |||
![]() |
2.3 | 66 | ---- |
![]() |
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 | |||
![]() |
2.3 | 78 | ---- |
![]() |
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 | |||
![]() |
2.3 | 87 | ---- |
![]() |
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 | |||
![]() |
2.3 | 96 | ---- |
![]() |
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 | |||
![]() |
2.3 | 110 | ---- |
![]() |
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 | |||
![]() |
2.3 | 120 | ---- |
![]() |
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 | |||
![]() |
2.3 | 128 | ---- |
![]() |
2.1 | 129 | |
| 130 | == Liens internes == | ||
| 131 | |||
![]() |
2.5 | 132 | * [[Retour aux scripts personnels>>doc:Wiki Batcave John.TutosLinux.ScriptsPerso.WebHome]] |
