Skip to main content
< All Topics
Print

Clear Storage – ONLY cPanel

Table of Contents

Centos / Arma / Rocky:

#!/bin/bash
set -euo pipefail

echo "Starting system cleanup (AlmaLinux)..."

# ---- Safety checks ----
if [[ "${EUID}" -ne 0 ]]; then
  echo "ERROR: Run this script as root."
  exit 1
fi

# ---- Tunables ----
GZ_DAYS="${GZ_DAYS:-7}"          # delete .gz older than this many days
BACKUP_DAYS="${BACKUP_DAYS:-7}"  # delete /backup files older than this many days

# Helper: iterate real cPanel home dirs skipping virtfs and non-directories
user_homes() {
  for d in /home/*; do
    [[ -d "$d" ]] || continue
    [[ "$d" == "/home/virtfs" ]] && continue
    echo "$d"
  done
}

echo "Removing cPanel temp files..."
for h in $(user_homes); do
  rm -fv "$h/tmp/Cpanel_"* 2>/dev/null || true
done

echo "Cleaning dnf cache..."
dnf -y clean all >/dev/null 2>&1 || true
rm -rf /var/cache/dnf/* 2>/dev/null || true

echo "Removing Apache backup files..."
rm -fv /usr/local/apache.backup* 2>/dev/null || true

echo "Removing user backups..."
if [[ -d /var/cpanel/users ]]; then
  while IFS= read -r user; do
    rm -fv "/home/$user/backup-"*"$user.tar.gz" 2>/dev/null || true
  done < <(ls -A /var/cpanel/users 2>/dev/null || true)
else
  echo "Note: /var/cpanel/users not found (is this a cPanel server?)."
fi

echo "Removing Softaculous backups..."
for h in $(user_homes); do
  rm -rf "$h/softaculous_backups/"* 2>/dev/null || true
done

echo "Removing user logs directories..."
for h in $(user_homes); do
  rm -rf "$h/logs/"* 2>/dev/null || true
done

echo "Cleaning .trash contents..."
for h in $(user_homes); do
  [[ -d "$h/.trash" ]] && rm -rf "$h/.trash/"* 2>/dev/null || true
done

echo "Running dnf autoremove..."
dnf -y autoremove >/dev/null 2>&1 || true

echo "Cleaning system temp files..."
rm -rf /var/tmp/* 2>/dev/null || true

# /var/crash is usually Ubuntu; keep only if it exists
if [[ -d /var/crash ]]; then
  rm -rf /var/crash/* 2>/dev/null || true
fi

echo "Removing backups older than ${BACKUP_DAYS} days from /backup..."
if [[ -d /backup ]]; then
  find /backup -xdev -type f -mtime +"${BACKUP_DAYS}" -print -delete 2>/dev/null || true
else
  echo "Note: /backup not found skipping."
fi

echo "Cleaning cPanel user cache files..."
for h in $(user_homes); do
  rm -rf "$h/.cpanel/comet/"* 2>/dev/null || true
  rm -rf "$h/.cpanel/datastore/"* 2>/dev/null || true
  rm -rf "$h/.cpanel/logs/"* 2>/dev/null || true
done

# ---- LOGS + .GZ CLEANUP (skip /home/virtfs) ----
echo "Rotating logs..."
logrotate -f /etc/logrotate.conf 2>/dev/null || true

echo "Vacuuming systemd journal (older than 3 days)..."
if command -v journalctl >/dev/null 2>&1; then
  journalctl --vacuum-time=3d 2>/dev/null || true
fi

echo "Deleting old compressed logs (*.gz) older than ${GZ_DAYS} days (excluding /home/virtfs)..."

# 1) System logs (common place for *.gz rotated logs)
if [[ -d /var/log ]]; then
  find /var/log -xdev -type f -name "*.gz" -mtime +"${GZ_DAYS}" -print -delete 2>/dev/null || true
fi

# 2) Backups (if you store compressed backups)
if [[ -d /backup ]]; then
  find /backup -xdev -type f -name "*.gz" -mtime +"${GZ_DAYS}" -print -delete 2>/dev/null || true
fi

# 3) User home areas (but DO NOT touch /home/virtfs)
find /home \
  -path /home/virtfs -prune -o \
  -type f -name "*.gz" -mtime +"${GZ_DAYS}" -print -delete 2>/dev/null || true

# Optional: clean old uncompressed *.log files in user home "logs" dirs only
# (safer than touching /var/log/*.log directly)
echo "Deleting old user-home *.log files older than ${GZ_DAYS} days (home logs only)..."
for h in $(user_homes); do
  if [[ -d "$h/logs" ]]; then
    find "$h/logs" -type f -name "*.log" -mtime +"${GZ_DAYS}" -print -delete 2>/dev/null || true
  fi
done

echo "Cleaning root cache..."
rm -rf /root/.cache/* 2>/dev/null || true

echo "Cleanup completed successfully!"

UBUNTU:

#!/bin/bash

# Cleanup script for system maintenance

echo "Starting system cleanup..."

# Remove Cpanel temp files
echo "Removing Cpanel temp files..."
sudo rm -fv /home/*/tmp/Cpanel_*

# Clean apt cache
echo "Cleaning apt cache..."
sudo apt-get clean

# Remove Apache backup files
echo "Removing Apache backup files..."
sudo rm -fv /usr/local/apache.backup*

# Remove user backups
echo "Removing user backups..."
for user in $(ls -A /var/cpanel/users); do
    sudo rm -fv /home/$user/backup-*$user.tar.gz
done

# Remove softaculous backups
echo "Removing softaculous backups..."
sudo rm -rf /home/*/softaculous_backups/*

# Remove user logs
echo "Removing user logs..."
sudo rm -rf /home/*/logs/*

# Remove .trash directories
echo "Cleaning .trash directories..."
sudo find /home -type d -name .trash -exec rm -rf {} +

# System cleanup
echo "Running system autoremove and autoclean..."
sudo apt-get autoremove -y
sudo apt-get autoclean -y

# Clean system temp files
echo "Cleaning system temp files..."
sudo rm -rf /var/crash/*
sudo rm -rf /var/tmp/*

# Clean old backups
echo "Removing backups older than 7 days..."
sudo find /backup -type f -mtime +7 -delete

# Clean cpanel files
echo "Cleaning cpanel files..."
sudo rm -rf /home/*/.cpanel/comet/*
sudo rm -rf /home/*/.cpanel/datastore/*
sudo rm -rf /home/*/.cpanel/logs/*

# Clean system logs
echo "Cleaning system logs..."
sudo find /var/log -type f -name "*.log" -delete
sudo journalctl --vacuum-time=3d

# Clean apt cache and lists
echo "Cleaning apt cache and lists..."
sudo rm -rf /var/cache/apt/archives/*
sudo rm -rf /var/cache/apt/archives/partial/*
sudo rm -rf /var/lib/apt/lists/*

# Clean user cache
echo "Cleaning user cache..."
sudo rm -rf ~/.cache/*

echo "Cleanup completed successfully!"

Save it as “server_clean_up.sh”

chmod +x server_clean_up.sh

./server_clean_up.sh

Table of Contents