Gestion et Nettoyage du Cache sur macOS
Gérez et nettoyez différents types de cache sur vos appareils MacFleet à l'aide d'outils en ligne de commande. Ce tutoriel couvre le cache système, le cache de navigateur, le cache d'applications et les politiques de gestion de cache à l'échelle de l'entreprise pour une performance et une gestion de stockage optimales.
Comprendre le Système de Cache macOS
macOS maintient plusieurs types de cache pour améliorer les performances du système et des applications :
Types de Cache
- Cache Système - Journaux, rapports de diagnostic, fichiers temporaires système
- Cache Utilisateur - Fichiers temporaires et données spécifiques aux applications
- Cache Navigateur - Données de navigation web, cookies, stockage de session
- Cache Applications - Données mises en cache et préférences spécifiques aux applications
- Cache Police - Fichiers de cache de polices système et utilisateur
Emplacements de Cache
- Système :
/var/log/
,/Library/Caches/
,/System/Library/Caches/
- Utilisateur :
~/Library/Caches/
,~/Library/Application Support/
- Navigateur : Répertoires spécifiques aux navigateurs dans la bibliothèque utilisateur
- Téléchargements :
~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV*
Gestion du Cache Système
Nettoyer le Cache Système
#!/bin/bash
# Nettoyer les fichiers de cache système
echo "🧹 Nettoyage du cache système..."
# Nettoyer les journaux système (avec limite de taille pour la sécurité)
echo "Nettoyage des journaux système..."
sudo find /var/log -name "*.log" -type f -size +100M -delete 2>/dev/null
sudo find /var/log -name "*.out" -type f -size +50M -delete 2>/dev/null
# Nettoyer les caches système
echo "Nettoyage des caches système..."
sudo rm -rf /Library/Caches/* 2>/dev/null
sudo rm -rf /System/Library/Caches/* 2>/dev/null
# Nettoyer les fichiers temporaires
echo "Nettoyage des fichiers temporaires..."
sudo rm -rf /tmp/* 2>/dev/null
sudo rm -rf /var/tmp/* 2>/dev/null
echo "✅ Cache système nettoyé avec succès"
Nettoyer le Cache Utilisateur
#!/bin/bash
# Nettoyer les fichiers de cache de l'utilisateur actuel
USER=$(whoami)
echo "🗂️ Nettoyage du cache utilisateur pour : $USER"
# Nettoyer les caches utilisateur
echo "Nettoyage des caches utilisateur..."
rm -rf ~/Library/Caches/* 2>/dev/null
# Nettoyer les journaux utilisateur
echo "Nettoyage des journaux utilisateur..."
rm -rf ~/Library/Logs/* 2>/dev/null
# Nettoyer les miniatures QuickLook
echo "Nettoyage des miniatures QuickLook..."
rm -rf ~/Library/Caches/com.apple.QuickLook.thumbnailcache/* 2>/dev/null
# Nettoyer le cache Spotlight
echo "Nettoyage du cache Spotlight..."
sudo mdutil -E / 2>/dev/null
echo "✅ Cache utilisateur nettoyé avec succès"
Gestion du Cache de Navigateur
Nettoyer le Cache Safari
#!/bin/bash
# Nettoyer le cache du navigateur Safari
echo "🌐 Nettoyage du cache Safari..."
# Vérifier si Safari est en cours d'exécution
if pgrep -x "Safari" > /dev/null; then
echo "⚠️ Safari est en cours d'exécution. Veuillez fermer Safari d'abord."
read -p "Appuyez sur Entrée pour continuer après avoir fermé Safari..."
fi
# Nettoyer les fichiers de cache Safari
rm -rf ~/Library/Caches/com.apple.Safari/* 2>/dev/null
rm -rf ~/Library/Safari/LocalStorage/* 2>/dev/null
rm -rf ~/Library/Safari/Databases/* 2>/dev/null
rm -rf ~/Library/Safari/WebpageIcons.db 2>/dev/null
# Nettoyer l'historique des téléchargements Safari
sqlite3 ~/Library/Safari/Downloads.plist "DELETE FROM Downloads;" 2>/dev/null
echo "✅ Cache Safari nettoyé avec succès"
Nettoyer le Cache Chrome
#!/bin/bash
# Nettoyer le cache du navigateur Google Chrome
echo "🔍 Nettoyage du cache Google Chrome..."
# Vérifier si Chrome est installé
if [[ ! -d ~/Library/Application\ Support/Google/Chrome ]]; then
echo "ℹ️ Google Chrome non trouvé sur ce système"
exit 0
fi
# Vérifier si Chrome est en cours d'exécution
if pgrep -x "Google Chrome" > /dev/null; then
echo "⚠️ Chrome est en cours d'exécution. Veuillez fermer Chrome d'abord."
read -p "Appuyez sur Entrée pour continuer après avoir fermé Chrome..."
fi
# Nettoyer les fichiers de cache Chrome
rm -rf ~/Library/Application\ Support/Google/Chrome/*/Cache/* 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/GPUCache/* 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/*.ldb 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/*.log 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/Extension\ State/* 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/Session\ Storage/* 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/Current\ Session 2>/dev/null
rm -rf ~/Library/Application\ Support/Google/Chrome/*/Storage/ext/* 2>/dev/null
echo "✅ Cache Chrome nettoyé avec succès"
Nettoyer le Cache Firefox
#!/bin/bash
# Nettoyer le cache du navigateur Mozilla Firefox
echo "🦊 Nettoyage du cache Firefox..."
# Vérifier si Firefox est installé
if [[ ! -d ~/Library/Application\ Support/Firefox ]]; then
echo "ℹ️ Firefox non trouvé sur ce système"
exit 0
fi
# Vérifier si Firefox est en cours d'exécution
if pgrep -x "firefox" > /dev/null; then
echo "⚠️ Firefox est en cours d'exécution. Veuillez fermer Firefox d'abord."
read -p "Appuyez sur Entrée pour continuer après avoir fermé Firefox..."
fi
# Trouver les répertoires de profil Firefox
for profile in ~/Library/Application\ Support/Firefox/Profiles/*; do
if [[ -d "$profile" ]]; then
echo "Nettoyage du profil Firefox : $(basename "$profile")"
rm -rf "$profile/cache2"/* 2>/dev/null
rm -rf "$profile/thumbnails"/* 2>/dev/null
rm -rf "$profile/cookies.sqlite-wal" 2>/dev/null
rm -rf "$profile/webappsstore.sqlite" 2>/dev/null
fi
done
echo "✅ Cache Firefox nettoyé avec succès"
Nettoyer le Cache Opera
#!/bin/bash
# Nettoyer le cache du navigateur Opera
echo "🎭 Nettoyage du cache Opera..."
# Vérifier si Opera est installé
if [[ ! -d ~/Library/Application\ Support/com.operasoftware.Opera ]]; then
echo "ℹ️ Opera non trouvé sur ce système"
exit 0
fi
# Vérifier si Opera est en cours d'exécution
if pgrep -x "Opera" > /dev/null; then
echo "⚠️ Opera est en cours d'exécution. Veuillez fermer Opera d'abord."
read -p "Appuyez sur Entrée pour continuer après avoir fermé Opera..."
fi
# Nettoyer les fichiers de cache Opera
rm -rf ~/Library/Application\ Support/com.operasoftware.Opera/Cache/* 2>/dev/null
rm -rf ~/Library/Application\ Support/com.operasoftware.Opera/GPUCache/* 2>/dev/null
rm -rf ~/Library/Application\ Support/com.operasoftware.Opera/Session\ Storage/* 2>/dev/null
echo "✅ Cache Opera nettoyé avec succès"
Gestion du Cache d'Applications
Nettoyer les Caches d'Applications
#!/bin/bash
# Nettoyer les caches spécifiques aux applications
echo "📱 Nettoyage des caches d'applications..."
# Nettoyer les caches d'applications dans Containers
echo "Nettoyage des caches d'applications conteneurisées..."
for container in ~/Library/Containers/*; do
if [[ -d "$container/Data/Library/Caches" ]]; then
app_name=$(basename "$container")
echo "Nettoyage du cache pour : $app_name"
rm -rf "$container/Data/Library/Caches"/* 2>/dev/null
fi
done
# Nettoyer le cache Adobe
if [[ -d ~/Library/Caches/Adobe ]]; then
echo "Nettoyage du cache Adobe..."
rm -rf ~/Library/Caches/Adobe/* 2>/dev/null
fi
# Nettoyer le cache Microsoft Office
if [[ -d ~/Library/Caches/Microsoft ]]; then
echo "Nettoyage du cache Microsoft Office..."
rm -rf ~/Library/Caches/Microsoft/* 2>/dev/null
fi
# Nettoyer le cache Xcode
if [[ -d ~/Library/Developer/Xcode/DerivedData ]]; then
echo "Nettoyage des données dérivées Xcode..."
rm -rf ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null
fi
echo "✅ Caches d'applications nettoyés avec succès"
Nettoyer l'Historique des Téléchargements
#!/bin/bash
# Nettoyer l'historique des téléchargements et la base de données de quarantaine
echo "📥 Nettoyage de l'historique des téléchargements..."
# Nettoyer les événements de quarantaine (historique des téléchargements)
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* \
'DELETE FROM LSQuarantineEvent' 2>/dev/null
# Nettoyer les éléments récents
rm -rf ~/Library/Application\ Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.RecentDocuments.sfl* 2>/dev/null
rm -rf ~/Library/Application\ Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.RecentApplications.sfl* 2>/dev/null
echo "✅ Historique des téléchargements nettoyé avec succès"
Nettoyer l'Historique du Terminal
#!/bin/bash
# Nettoyer l'historique des commandes du terminal
echo "💻 Nettoyage de l'historique du terminal..."
# Nettoyer l'historique bash
rm -rf ~/.bash_sessions/* 2>/dev/null
rm -rf ~/.bash_history 2>/dev/null
# Nettoyer l'historique zsh
rm -rf ~/.zsh_sessions/* 2>/dev/null
rm -rf ~/.zsh_history 2>/dev/null
# Nettoyer d'autres historiques de shell
rm -rf ~/.history 2>/dev/null
rm -rf ~/.sh_history 2>/dev/null
echo "✅ Historique du terminal nettoyé avec succès"
Script de Gestion de Cache d'Entreprise
#!/bin/bash
# Outil de Gestion de Cache MacFleet
# Gestion complète du cache pour les environnements d'entreprise
# Configuration
LOG_FILE="/var/log/macfleet_cache.log"
BACKUP_DIR="/var/backups/macfleet/cache"
REPORT_DIR="/var/reports/macfleet/cache"
CONFIG_FILE="/etc/macfleet/cache_policy.conf"
# Paramètres de politique de cache
ENABLE_SYSTEM_CACHE_CLEAR=true
ENABLE_BROWSER_CACHE_CLEAR=true
ENABLE_APP_CACHE_CLEAR=true
ENABLE_DOWNLOAD_HISTORY_CLEAR=false
ENABLE_TERMINAL_HISTORY_CLEAR=false
CACHE_SIZE_THRESHOLD_MB=1000
CACHE_AGE_DAYS=30
# Fonction de journalisation
log_action() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
# Configurer les répertoires
setup_directories() {
for dir in "$BACKUP_DIR" "$REPORT_DIR" "$(dirname "$CONFIG_FILE")"; do
if [[ ! -d "$dir" ]]; then
sudo mkdir -p "$dir"
log_action "Répertoire créé : $dir"
fi
done
}
# Calculer la taille du cache
calculate_cache_size() {
local path="$1"
if [[ -d "$path" ]]; then
du -sm "$path" 2>/dev/null | awk '{print $1}'
else
echo "0"
fi
}
# Générer un rapport de cache
generate_cache_report() {
local report_file="$REPORT_DIR/rapport_cache_$(date +%Y%m%d_%H%M%S).txt"
echo "📊 Génération du rapport d'analyse de cache..."
{
echo "Rapport d'Analyse de Cache MacFleet"
echo "Généré : $(date)"
echo "Nom d'hôte : $(hostname)"
echo "Utilisateur : $(whoami)"
echo "================================="
echo ""
echo "=== Analyse du Cache Système ==="
echo "Taille des journaux système : $(calculate_cache_size /var/log) MB"
echo "Taille du cache système : $(calculate_cache_size /Library/Caches) MB"
echo "Taille des fichiers temporaires : $(calculate_cache_size /tmp) MB"
echo ""
echo "=== Analyse du Cache Utilisateur ==="
echo "Taille du cache utilisateur : $(calculate_cache_size ~/Library/Caches) MB"
echo "Taille des journaux utilisateur : $(calculate_cache_size ~/Library/Logs) MB"
echo "Taille du cache QuickLook : $(calculate_cache_size ~/Library/Caches/com.apple.QuickLook.thumbnailcache) MB"
echo ""
echo "=== Analyse du Cache de Navigateur ==="
if [[ -d ~/Library/Caches/com.apple.Safari ]]; then
echo "Taille du cache Safari : $(calculate_cache_size ~/Library/Caches/com.apple.Safari) MB"
fi
if [[ -d ~/Library/Application\ Support/Google/Chrome ]]; then
echo "Taille du cache Chrome : $(calculate_cache_size ~/Library/Application\ Support/Google/Chrome) MB"
fi
if [[ -d ~/Library/Application\ Support/Firefox ]]; then
echo "Taille du cache Firefox : $(calculate_cache_size ~/Library/Application\ Support/Firefox) MB"
fi
if [[ -d ~/Library/Application\ Support/com.operasoftware.Opera ]]; then
echo "Taille du cache Opera : $(calculate_cache_size ~/Library/Application\ Support/com.operasoftware.Opera) MB"
fi
echo ""
echo "=== Analyse du Cache d'Applications ==="
local total_app_cache=0
for container in ~/Library/Containers/*; do
if [[ -d "$container/Data/Library/Caches" ]]; then
local size=$(calculate_cache_size "$container/Data/Library/Caches")
if [[ $size -gt 10 ]]; then # Signaler seulement si > 10MB
echo "$(basename "$container") : ${size} MB"
total_app_cache=$((total_app_cache + size))
fi
fi
done
echo "Total cache d'applications : ${total_app_cache} MB"
echo ""
echo "=== Résumé d'Utilisation du Disque ==="
echo "Espace disque disponible : $(df -h / | awk 'NR==2{print $4}')"
echo "Estimation totale du cache : $(($(calculate_cache_size ~/Library/Caches) + total_app_cache)) MB"
} > "$report_file"
echo "📊 Rapport sauvegardé dans : $report_file"
log_action "Rapport de cache généré : $report_file"
}
# Nettoyage sélectif du cache basé sur la politique
clear_cache_selective() {
echo "🧹 Début du nettoyage sélectif du cache basé sur la politique d'entreprise..."
log_action "Début du nettoyage sélectif du cache"
local total_cleared=0
# Nettoyage du cache système
if [[ "$ENABLE_SYSTEM_CACHE_CLEAR" == "true" ]]; then
echo "Nettoyage du cache système..."
local before_size=$(calculate_cache_size /Library/Caches)
# Nettoyer seulement les anciens fichiers de cache
find /Library/Caches -type f -mtime +$CACHE_AGE_DAYS -delete 2>/dev/null
sudo find /var/log -name "*.log" -type f -mtime +$CACHE_AGE_DAYS -size +100M -delete 2>/dev/null
local after_size=$(calculate_cache_size /Library/Caches)
local cleared=$((before_size - after_size))
total_cleared=$((total_cleared + cleared))
log_action "Cache système nettoyé : ${cleared} MB"
fi
# Nettoyage du cache utilisateur
echo "Nettoyage du cache utilisateur..."
local before_size=$(calculate_cache_size ~/Library/Caches)
# Nettoyer seulement les anciens fichiers de cache
find ~/Library/Caches -type f -mtime +$CACHE_AGE_DAYS -delete 2>/dev/null
find ~/Library/Logs -type f -mtime +$CACHE_AGE_DAYS -delete 2>/dev/null
local after_size=$(calculate_cache_size ~/Library/Caches)
local cleared=$((before_size - after_size))
total_cleared=$((total_cleared + cleared))
log_action "Cache utilisateur nettoyé : ${cleared} MB"
# Nettoyage du cache de navigateur
if [[ "$ENABLE_BROWSER_CACHE_CLEAR" == "true" ]]; then
echo "Nettoyage des caches de navigateur..."
clear_browser_caches
log_action "Caches de navigateur nettoyés"
fi
# Nettoyage du cache d'applications
if [[ "$ENABLE_APP_CACHE_CLEAR" == "true" ]]; then
echo "Nettoyage des caches d'applications..."
clear_application_caches
log_action "Caches d'applications nettoyés"
fi
# Nettoyage de l'historique des téléchargements
if [[ "$ENABLE_DOWNLOAD_HISTORY_CLEAR" == "true" ]]; then
echo "Nettoyage de l'historique des téléchargements..."
sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV* \
'DELETE FROM LSQuarantineEvent WHERE LSQuarantineTimeStamp < datetime("now", "-30 days")' 2>/dev/null
log_action "Historique des téléchargements nettoyé"
fi
# Nettoyage de l'historique du terminal
if [[ "$ENABLE_TERMINAL_HISTORY_CLEAR" == "true" ]]; then
echo "Nettoyage de l'historique du terminal..."
rm -rf ~/.bash_sessions/* 2>/dev/null
rm -rf ~/.zsh_sessions/* 2>/dev/null
log_action "Historique du terminal nettoyé"
fi
echo "✅ Nettoyage du cache terminé. Total nettoyé : ${total_cleared} MB"
log_action "Nettoyage du cache terminé : ${total_cleared} MB nettoyés"
}
# Fonction de nettoyage des caches de navigateur
clear_browser_caches() {
# Safari
if [[ -d ~/Library/Caches/com.apple.Safari ]]; then
rm -rf ~/Library/Caches/com.apple.Safari/* 2>/dev/null
fi
# Chrome
if [[ -d ~/Library/Application\ Support/Google/Chrome ]]; then
find ~/Library/Application\ Support/Google/Chrome -name "Cache" -type d -exec rm -rf {}/* \; 2>/dev/null
find ~/Library/Application\ Support/Google/Chrome -name "GPUCache" -type d -exec rm -rf {}/* \; 2>/dev/null
fi
# Firefox
for profile in ~/Library/Application\ Support/Firefox/Profiles/*; do
if [[ -d "$profile/cache2" ]]; then
rm -rf "$profile/cache2"/* 2>/dev/null
fi
done
# Opera
if [[ -d ~/Library/Application\ Support/com.operasoftware.Opera ]]; then
rm -rf ~/Library/Application\ Support/com.operasoftware.Opera/Cache/* 2>/dev/null
fi
}
# Fonction d'exécution principale
main() {
local action="${1:-aide}"
local target="${2:-}"
log_action "=== Gestion de Cache MacFleet Démarrée ==="
setup_directories
case "$action" in
"analyser"|"rapport")
generate_cache_report
;;
"nettoyer")
clear_cache_selective
;;
"systeme")
echo "🧹 Nettoyage du cache système uniquement..."
sudo rm -rf /Library/Caches/* 2>/dev/null
sudo find /var/log -name "*.log" -type f -size +100M -delete 2>/dev/null
;;
"utilisateur")
echo "🗂️ Nettoyage du cache utilisateur uniquement..."
rm -rf ~/Library/Caches/* 2>/dev/null
rm -rf ~/Library/Logs/* 2>/dev/null
;;
"navigateur")
echo "🌐 Nettoyage du cache de navigateur uniquement..."
clear_browser_caches
;;
"aide"|*)
echo "Outil de Gestion de Cache MacFleet"
echo "Utilisation : $0 [action] [options]"
echo ""
echo "Actions :"
echo " analyser - Générer un rapport d'analyse de cache"
echo " nettoyer - Nettoyer le cache basé sur la politique d'entreprise"
echo " systeme - Nettoyer le cache système uniquement"
echo " utilisateur - Nettoyer le cache utilisateur uniquement"
echo " navigateur - Nettoyer le cache de navigateur uniquement"
echo " aide - Afficher ce message d'aide"
;;
esac
log_action "=== Gestion de Cache MacFleet Terminée ==="
}
# Exécuter la fonction principale
main "$@"
Meilleures Pratiques de Gestion de Cache
Directives de Nettoyage de Cache Sécurisé
Type de Cache | Niveau de Sécurité | Recommandation |
---|---|---|
Cache Système | Risque Élevé | Nettoyer sélectivement, éviter les fichiers système critiques |
Cache Utilisateur | Risque Moyen | Sûr à nettoyer, peut réinitialiser les préférences |
Cache Navigateur | Risque Faible | Sûr à nettoyer, va retélécharger le contenu web |
Cache Applications | Risque Moyen | Vérifier les exigences spécifiques aux applications |
Historique Téléchargements | Risque Faible | Considérer les implications de confidentialité |
Évaluation de l'Impact sur les Performances
# Mesurer l'impact du nettoyage de cache
echo "=== Avant le Nettoyage de Cache ==="
echo "Espace disponible : $(df -h / | awk 'NR==2{print $4}')"
echo "Taille du cache : $(du -sh ~/Library/Caches | awk '{print $1}')"
# Effectuer le nettoyage de cache
# ... commandes de nettoyage de cache ...
echo "=== Après le Nettoyage de Cache ==="
echo "Espace disponible : $(df -h / | awk 'NR==2{print $4}')"
echo "Espace récupéré : [différence calculée]"
Considérations de Sécurité
- Prévention de Perte de Données - Toujours sauvegarder les données importantes avant de nettoyer les caches
- Impact sur les Applications - Certaines applications peuvent avoir besoin de reconstruire les caches après nettoyage
- Impact sur les Performances - Les performances initiales peuvent être plus lentes jusqu'à ce que les caches se reconstruisent
- Implications de Confidentialité - Le nettoyage du cache de navigateur supprime les mots de passe sauvegardés et paramètres
- Stabilité du Système - Éviter de nettoyer les caches système critiques sans tests appropriés
Dépannage
Échecs de Nettoyage de Cache
# Vérifier les fichiers verrouillés
lsof | grep "Library/Caches"
# Forcer la fermeture des applications utilisant le cache
sudo pkill -f "nom_application"
# Vérifier les permissions
ls -la ~/Library/Caches/
Espace Disque Non Libéré
# Forcer la mise à jour du système de fichiers
sync
# Vérifier les fichiers cachés
ls -la ~/Library/Caches/
# Vérifier la suppression effective
du -sh ~/Library/Caches/
Notes Importantes
- Sauvegarder les Données Importantes avant d'exécuter les scripts de nettoyage de cache
- Fermer les Applications avant de nettoyer leurs caches spécifiques
- Tester les Scripts sur des appareils individuels avant le déploiement de flotte
- Surveiller les Performances après le nettoyage de cache pour tout problème
- Planifier un Nettoyage Régulier pour maintenir des performances optimales
- Documenter les Politiques pour la conformité et l'audit