작업하다가 로컬 저장공간이 부족해져서, 오랜만에 임시 파일이나 캐시 파일같은 더미 파일이랑 안쓰는 데이터 파일들을 싸그리 지웠더니 저장공간이 몇십 기가 단위로 늘어났다.
정기적으로 이렇게 메모리 잡아먹는 더미파일들을 지워버리면 좋을 것 같다는 생각이 들었다. 🤔
그래서 요런 파일들 삭제하는 명령어 싹 모아서 쉘스크립트 쓰고, 크론탭에 넣어서 일주일에 한번씩 실행하도록 설정 해 두었다!
#!/bin/bash
LOGFILE="/var/log/cleanup.log"
# 로그 파일 생성
if [ ! -f "$LOGFILE" ]; then
sudo touch "$LOGFILE"
sudo chmod 666 "$LOGFILE"
fi
echo "==== Storage Cleanup Started at $(date) ====" >> "$LOGFILE"
### 1. 로그 파일 정리 ###
echo "[*] Cleaning old logs..." | tee -a "$LOGFILE"
sudo journalctl --vacuum-size=500M >> "$LOGFILE" 2>&1
sudo rm -rf /var/log/*.gz /var/log/*.1 /var/log/journal/* >> "$LOGFILE" 2>&1
# journald 설정 추가
JOURNALD_CONF="/etc/systemd/journald.conf"
if ! grep -q "SystemMaxUse=50M" "$JOURNALD_CONF"; then
echo "[*] Setting journald log limit..." | tee -a "$LOGFILE"
echo "SystemMaxUse=50M" | sudo tee -a "$JOURNALD_CONF"
sudo systemctl restart systemd-journald
fi
### 2. 패키지 및 캐시 정리 ###
echo "[*] Cleaning package cache..." | tee -a "$LOGFILE"
sudo apt-get autoremove --purge -y >> "$LOGFILE" 2>&1
sudo apt-get clean >> "$LOGFILE" 2>&1
sudo apt-get autoclean >> "$LOGFILE" 2>&1
sudo rm -rf ~/.cache/* >> "$LOGFILE" 2>&1
sudo rm -rf /var/lib/snapd/snaps/* >> "$LOGFILE" 2>&1
### 3. /tmp 디렉토리 정리 및 자동 삭제 설정 ###
echo "[*] Cleaning /tmp directory..." | tee -a "$LOGFILE"
sudo rm -rf /tmp/* >> "$LOGFILE" 2>&1
TMP_CONF="/etc/tmpfiles.d/tmp.conf"
if [ ! -f "$TMP_CONF" ]; then
echo "[*] Setting up automatic /tmp cleanup..." | tee -a "$LOGFILE"
echo "d /tmp 1777 root root 1d" | sudo tee "$TMP_CONF"
sudo systemctl restart systemd-tmpfiles-clean.timer
fi
sudo systemd-tmpfiles --clean >> "$LOGFILE" 2>&1
### 4. Docker dangling 이미지 정리 ###
echo "[*] Removing Docker dangling images..." | tee -a "$LOGFILE"
docker image prune -f >> "$LOGFILE" 2>&1
### 5. 오래된 커널 정리 (rc 태그 삭제) ###
echo "[*] Cleaning old kernel configurations..." | tee -a "$LOGFILE"
sudo dpkg -P $(dpkg -l | grep '^rc' | awk '{print $2}') >> "$LOGFILE" 2>&1
sudo update-grub >> "$LOGFILE" 2>&1
### 6. 대용량 파일 탐색 (3GB 이상) ###
#echo "[*] Finding large files (3GB+)..." | tee -a "$LOGFILE"
#find / -type f -size +3G 2>/dev/null | tee -a "$LOGFILE"
echo "==== Storage Cleanup Finished at $(date) ====" >> "$LOGFILE"
df -h | tee -a
일단 지우려는 파일은 /var/log 디렉토리의 로그 파일들, 패키지 설치하다 보면 나오는 캐시파일들.., /tmp/ 디렉토리의 임시 파일들, docker image 실행하다 보면 생기는 dangling image 파일들, rc 태그의 오래된 리눅스 커널 정도이다.
대용량파일도 안쓰는거 있음 탐색해서 지울까 하다가 그건 나중에 수동으로 하기로..
실행 결과는 혹시 모르니 따로 로그 파일 만들어서 기록하기.
clean_storage.sh
로 생성해서 크론탭에 일요일 3시마다 실행하도록 등록해 두었다.
$ sudo chrontab -e
그렇게 더미 파일 삭제하고, 안쓰는 데이터들도 정리하고 났더니 정리 전 파티션 1 사용이 98%인가 99%인가 이랬는데 54%까지 줄어들었다.
이제 저장공간 관리는 자동화 했으니 맘편히(?) 개발생활 해야지~