#!/bin/bash # Function to estimate the size of the apt cache estimate_apt_cache_size() { echo "Estimating the size of the apt cache:" sudo du -sh /var/cache/apt echo } # Function to estimate the size of old installed packages estimate_old_packages_size() { echo "Estimating the size of old installed packages:" sudo du -sh /var/lib/apt/lists /var/lib/apt/lists/partial echo } # Function to estimate the size of journal logs estimate_journal_size() { echo "Estimating the size of journal logs:" sudo journalctl --disk-usage echo } # Function to estimate the size of temporary files estimate_tmp_size() { echo "Estimating the size of temporary files:" sudo du -sh /tmp /var/tmp echo } # Function to estimate the size of unused Docker volumes estimate_docker_volumes_size() { echo "Estimating the size of unused Docker volumes:" docker volume ls -qf dangling=true | xargs -I {} docker inspect {} -f '{{ .Name }}: {{ .Size }}' | awk '{ sum += $3 } END { print sum/1024/1024 " MB" }' echo } # Function to list directories consuming more than a specified size list_large_directories() { local directory=$1 local size_limit=$2 echo "Directories in $directory consuming more than $size_limit:" sudo du -ah $directory 2>/dev/null | awk -v limit=$size_limit '{ size=$1; unit=substr(size, length(size)); size_val=substr(size, 1, length(size)-1); if ((unit=="G" && size_val+0 > limit) || (unit=="T" && size_val*1024 > limit)) { print } }' echo } # Estimate storage savings echo "Estimating potential storage savings..." estimate_apt_cache_size estimate_old_packages_size estimate_journal_size estimate_tmp_size estimate_docker_volumes_size # List large directories echo "Listing directories consuming more than 5GB and 10GB:" list_large_directories / 5 list_large_directories /home 5 list_large_directories / 10 list_large_directories /home 10 echo "Storage savings estimation and large directory listing completed."