Quick Diagnostic Commands
1. Overall Disk Usage
df -h
df -h --total
2. Directory Sizes
Find largest directories:
sudo du -sh /* 2>/dev/null | sort -hr | head -10
Drill into a specific directory:
sudo du -sh /var/* | sort -hr | head -10
sudo du -sh /home/* | sort -hr | head -10
Interactive Tools
ncdu (best for exploration)
sudo apt install ncdu -y
sudo ncdu /
Disk Usage Analyzer (GUI - local use)
For mounted remote drives via SSHFS.
Find Specific Types of Files
Files larger than 100MB
sudo find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null | awk '{print $5, $9}' | sort -hr | head -20
Old files (modified > 30 days ago)
sudo find / -type f -mtime +30 -exec ls -lh {} ; 2>/dev/null | head -20
Log files
sudo du -sh /var/log/* | sort -hr | head -10
Database files
sudo du -sh /var/lib/mysql/* 2>/dev/null
sudo du -sh /var/lib/postgresql/* 2>/dev/null
Temporary files
sudo du -sh /tmp/*
sudo du -sh /var/tmp/*
Monitor Disk Changes in Real Time
sudo iotop -o
watch -n 5 "df -h /"
Track Largest Files Over Time
sudo find / -type f -exec du -b {} + 2>/dev/null | sort -rn | head -20 > /tmp/disk_usage_baseline.txt
sudo find / -type f -exec du -b {} + 2>/dev/null | sort -rn | head -20 > /tmp/disk_usage_current.txt
diff /tmp/disk_usage_baseline.txt /tmp/disk_usage_current.txt
💡 Set up monitoring with df -h in a cron job to alert you before disk fills.