Gestion de l'espace disque
Ce guide explique comment analyser, nettoyer et optimiser l'espace disque de votre VPS.
Analyser l'utilisation du disque
Vue d'ensemble
df -h
Exemple :
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 35G 15G 70% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
Détail par dossier
# Taille des dossiers principaux
du -h --max-depth=1 / 2>/dev/null | sort -hr | head -15
Résultat typique :
15G /var
8G /usr
5G /home
3G /opt
Analyser un dossier spécifique
# Analyser /var
du -h --max-depth=1 /var | sort -hr
# Analyser /home
du -h --max-depth=1 /home | sort -hr
Outil interactif : ncdu
# Installer
sudo apt install ncdu
# Analyser
sudo ncdu /
# Navigation : flèches, Entrée pour entrer, d pour supprimer
Nettoyer le système
Paquets APT
# Supprimer les paquets orphelins
sudo apt autoremove -y
# Vider le cache APT
sudo apt clean
# Supprimer les vieux kernels
sudo apt autoremove --purge -y
Espace récupéré : ~500MB à 2GB
Cache et fichiers temporaires
# Fichiers temporaires
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
# Cache des thumbnails (si desktop)
rm -rf ~/.cache/thumbnails/*
Logs système
# Taille actuelle des logs
du -h /var/log/
# Nettoyer les journaux systemd (garder 7 jours)
sudo journalctl --vacuum-time=7d
# Ou garder max 500MB
sudo journalctl --vacuum-size=500M
# Supprimer les vieux logs compressés
sudo find /var/log -name "*.gz" -delete
sudo find /var/log -name "*.1" -delete
sudo find /var/log -name "*.old" -delete
Rotation des logs
Configurer une rotation automatique :
sudo nano /etc/logrotate.d/custom
/var/log/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
}
Nettoyer Docker
Si vous utilisez Docker :
# Voir l'utilisation
docker system df
# Supprimer les ressources inutilisées
docker system prune -af
# Supprimer aussi les volumes non utilisés
docker system prune -af --volumes
# Supprimer les images non taguées
docker image prune -af
Attention
docker system prune --volumes supprime les volumes non attachés. Vérifiez que vous n'avez pas de données importantes.
Nettoyer les applications
Node.js / npm
# Cache npm
npm cache clean --force
# node_modules inutiles
find /home -name "node_modules" -type d -exec du -sh {} \; 2>/dev/null
# Supprimer ceux qui ne servent plus
rm -rf /chemin/vers/projet/node_modules
Python / pip
# Cache pip
pip cache purge
# Ou manuellement
rm -rf ~/.cache/pip
Composer (PHP)
# Cache Composer
composer clear-cache
rm -rf ~/.composer/cache
Trouver les gros fichiers
# Fichiers > 100MB
find / -type f -size +100M 2>/dev/null | xargs ls -lh
# Fichiers > 500MB
find / -type f -size +500M 2>/dev/null | xargs ls -lh
# Top 20 des plus gros fichiers
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20
Fichiers à vérifier en priorité
Logs applicatifs
# Logs Nginx
du -h /var/log/nginx/
# Logs Apache
du -h /var/log/apache2/
# Logs MySQL
du -h /var/log/mysql/
Backups oubliés
# Chercher les .bak, .backup, .old
find / -name "*.bak" -o -name "*.backup" -o -name "*.old" 2>/dev/null | xargs du -ch
Core dumps
# Chercher les core dumps
find / -name "core.*" -o -name "core" 2>/dev/null
Fichiers de session PHP
du -h /var/lib/php/sessions/
# Nettoyer les vieilles sessions
find /var/lib/php/sessions/ -type f -mtime +7 -delete
Augmenter l'espace disque
Ajouter du swap (temporaire)
# Créer un fichier swap de 2GB
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Rendre permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Monter un stockage externe
Si votre offre inclut un stockage additionnel :
# Lister les disques
lsblk
# Formater (si nouveau)
sudo mkfs.ext4 /dev/sdb
# Créer le point de montage
sudo mkdir /mnt/storage
# Monter
sudo mount /dev/sdb /mnt/storage
# Montage automatique au boot
echo '/dev/sdb /mnt/storage ext4 defaults 0 2' | sudo tee -a /etc/fstab
Script de nettoyage automatique
sudo nano /usr/local/bin/clean-disk.sh
#!/bin/bash
echo "=== Nettoyage disque $(date) ==="
# Espace avant
echo "Espace avant :"
df -h /
# APT
echo "Nettoyage APT..."
apt autoremove -y > /dev/null
apt clean > /dev/null
# Journaux systemd
echo "Nettoyage journaux..."
journalctl --vacuum-time=7d > /dev/null
# Vieux logs
echo "Nettoyage vieux logs..."
find /var/log -name "*.gz" -delete
find /var/log -name "*.1" -delete
# Fichiers temporaires
echo "Nettoyage fichiers temporaires..."
rm -rf /tmp/* 2>/dev/null
rm -rf /var/tmp/* 2>/dev/null
# Docker (si installé)
if command -v docker &> /dev/null; then
echo "Nettoyage Docker..."
docker system prune -af > /dev/null 2>&1
fi
# Espace après
echo ""
echo "Espace après :"
df -h /
echo ""
echo "=== Nettoyage terminé ==="
sudo chmod +x /usr/local/bin/clean-disk.sh
Ajouter au cron (hebdomadaire) :
sudo crontab -e
0 3 * * 0 /usr/local/bin/clean-disk.sh >> /var/log/clean-disk.log 2>&1
Alertes d'espace disque
Script d'alerte :
sudo nano /usr/local/bin/disk-alert.sh
#!/bin/bash
THRESHOLD=85
EMAIL="admin@votredomaine.com"
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
echo "ALERTE: Disque à ${USAGE}% sur $(hostname)" | \
mail -s "Alerte disque $(hostname)" $EMAIL
fi
sudo chmod +x /usr/local/bin/disk-alert.sh
Cron quotidien :
0 9 * * * /usr/local/bin/disk-alert.sh
Bonnes pratiques
- Surveillez régulièrement l'espace disque avec
df -h - Configurez des alertes avant d'atteindre 90%
- Automatisez le nettoyage avec des crons
- Limitez la taille des logs avec logrotate
- Stockez les backups ailleurs que sur le VPS principal
Conseil
Un disque ne devrait jamais dépasser 85% d'utilisation pour garder une marge de sécurité.