#!/bin/bash
set -e
echo "🧹 시스템 캐시 정리를 시작합니다..."
# Docker 캐시 정리
echo "🐳 Docker 캐시 정리 중..."
if command -v docker &> /dev/null; then
echo " - 사용하지 않는 컨테이너 제거..."
docker container prune -f
echo " - 사용하지 않는 이미지 제거..."
docker image prune -a -f
echo " - 사용하지 않는 볼륨 제거..."
docker volume prune -f
echo " - 사용하지 않는 네트워크 제거..."
docker network prune -f
echo " - 빌드 캐시 제거..."
docker builder prune -a -f
echo " - 전체 시스템 정리..."
docker system prune -a -f --volumes
else
echo " Docker가 설치되어 있지 않습니다."
fi
# Ubuntu 패키지 캐시 정리
echo "📦 Ubuntu 패키지 캐시 정리 중..."
sudo apt clean
sudo apt autoremove -y
sudo apt autoclean
# APT 캐시 정리
echo " - APT 캐시 정리..."
sudo rm -rf /var/cache/apt/archives/*.deb
sudo rm -rf /var/cache/apt/archives/partial/*
# 로그 파일 정리
echo "📋 시스템 로그 정리 중..."
sudo journalctl --vacuum-time=7d
sudo find /var/log -name "*.log" -type f -mtime +30 -delete 2>/dev/null || true
sudo find /var/log -name "*.gz" -type f -mtime +30 -delete 2>/dev/null || true
# Snap 캐시 정리
echo "📱 Snap 캐시 정리 중..."
if command -v snap &> /dev/null; then
sudo snap refresh
LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do
sudo snap remove "$snapname" --revision="$revision" 2>/dev/null || true
done
else
echo " Snap이 설치되어 있지 않습니다."
fi
# .claude 캐시 정리
echo "🤖 Claude 캐시 정리 중..."
if [ -d "$HOME/.claude" ]; then
echo " - Claude 캐시 디렉토리 크기: $(du -sh $HOME/.claude 2>/dev/null | cut -f1)"
find "$HOME/.claude" -name "cache" -type d -exec rm -rf {} + 2>/dev/null || true
find "$HOME/.claude" -name "*.cache" -type f -delete 2>/dev/null || true
find "$HOME/.claude" -name "*.tmp" -type f -delete 2>/dev/null || true
find "$HOME/.claude" -name "*.log" -type f -mtime +7 -delete 2>/dev/null || true
else
echo " .claude 디렉토리가 없습니다."
fi
# .vscode 캐시 정리
echo "💻 VSCode 캐시 정리 중..."
if [ -d "$HOME/.vscode" ]; then
echo " - VSCode 캐시 디렉토리 크기: $(du -sh $HOME/.vscode 2>/dev/null | cut -f1)"
find "$HOME/.vscode" -name "CachedExtensions" -type d -exec rm -rf {} + 2>/dev/null || true
find "$HOME/.vscode" -name "logs" -type d -exec rm -rf {} + 2>/dev/null || true
find "$HOME/.vscode" -name "*.log" -type f -delete 2>/dev/null || true
fi
if [ -d "$HOME/.vscode-server" ]; then
echo " - VSCode Server 캐시 디렉토리 크기: $(du -sh $HOME/.vscode-server 2>/dev/null | cut -f1)"
find "$HOME/.vscode-server" -name "logs" -type d -exec rm -rf {} + 2>/dev/null || true
find "$HOME/.vscode-server" -name "*.log" -type f -mtime +7 -delete 2>/dev/null || true
fi
# npm 캐시 정리 (있는 경우)
echo "📦 npm 캐시 정리 중..."
if command -v npm &> /dev/null; then
npm cache clean --force 2>/dev/null || true
else
echo " npm이 설치되어 있지 않습니다."
fi
# pip 캐시 정리 (있는 경우)
echo "🐍 pip 캐시 정리 중..."
if command -v pip &> /dev/null; then
pip cache purge 2>/dev/null || true
elif command -v pip3 &> /dev/null; then
pip3 cache purge 2>/dev/null || true
else
echo " pip이 설치되어 있지 않습니다."
fi
# 임시 파일 정리
echo "🗑️ 임시 파일 정리 중..."
sudo rm -rf /tmp/* 2>/dev/null || true
sudo rm -rf /var/tmp/* 2>/dev/null || true
rm -rf ~/.cache/* 2>/dev/null || true
# 썸네일 캐시 정리
echo "🖼️ 썸네일 캐시 정리 중..."
rm -rf ~/.thumbnails/* 2>/dev/null || true
rm -rf ~/.cache/thumbnails/* 2>/dev/null || true
# 브라우저 캐시 정리 (Chrome, Firefox)
echo "🌐 브라우저 캐시 정리 중..."
# Chrome
find "$HOME/.cache/google-chrome" -type f -delete 2>/dev/null || true
# Firefox
find "$HOME/.cache/mozilla" -type f -delete 2>/dev/null || true
echo "✅ 캐시 정리가 완료되었습니다!"
echo ""
echo "📊 디스크 사용량:"
df -h / | tail -1
echo ""
echo "🆓 사용 가능한 메모리:"
free -h | grep '^Mem:' | awk '{print $7}'