re-adding haste

This commit is contained in:
colin 2024-11-30 13:02:45 -05:00
parent d038f4a6d4
commit 894fe5fb8f
1 changed files with 49 additions and 33 deletions

View File

@ -1,57 +1,63 @@
#!/bin/bash #!/bin/bash
echo "Starting disk space report... This may take a few minutes." LOG_FILE="/tmp/disk_space_report.log"
HASTE_URL="https://haste.nixc.us/documents"
# Clear the log file if it exists
> "$LOG_FILE"
echo "Starting disk space report... This may take a few minutes." | tee -a "$LOG_FILE"
# Function to estimate the size of the apt cache # Function to estimate the size of the apt cache
estimate_apt_cache_size() { estimate_apt_cache_size() {
echo "Estimating the size of the apt cache:" echo "Estimating the size of the apt cache:" | tee -a "$LOG_FILE"
sudo du -sh /var/cache/apt sudo du -sh /var/cache/apt | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Function to estimate the size of old installed packages # Function to estimate the size of old installed packages
estimate_old_packages_size() { estimate_old_packages_size() {
echo "Estimating the size of old installed packages:" echo "Estimating the size of old installed packages:" | tee -a "$LOG_FILE"
sudo du -sh /var/lib/apt/lists /var/lib/apt/lists/partial sudo du -sh /var/lib/apt/lists /var/lib/apt/lists/partial | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Function to estimate the size of journal logs # Function to estimate the size of journal logs
estimate_journal_size() { estimate_journal_size() {
echo "Estimating the size of journal logs:" echo "Estimating the size of journal logs:" | tee -a "$LOG_FILE"
sudo journalctl --disk-usage sudo journalctl --disk-usage | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Function to estimate the size of temporary files # Function to estimate the size of temporary files
estimate_tmp_size() { estimate_tmp_size() {
echo "Estimating the size of temporary files:" echo "Estimating the size of temporary files:" | tee -a "$LOG_FILE"
sudo du -sh /tmp /var/tmp sudo du -sh /tmp /var/tmp | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Function to estimate the size of unused Docker volumes # Function to estimate the size of unused Docker volumes
estimate_docker_volumes_size() { estimate_docker_volumes_size() {
echo "Estimating the size of unused Docker volumes:" echo "Estimating the size of unused Docker volumes:" | tee -a "$LOG_FILE"
docker volume ls -qf dangling=true | xargs -I {} docker volume inspect --format '{{ .Mountpoint }}' {} | xargs -I {} sudo du -sh {} | awk '{ sum += $1 } END { print sum "B" }' docker volume ls -qf dangling=true | xargs -I {} docker volume inspect --format '{{ .Mountpoint }}' {} | xargs -I {} sudo du -sh {} | awk '{ sum += $1 } END { print sum "B" }' | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Function to check and suggest logrotate for large Docker logs # Function to check and suggest logrotate for large Docker logs
check_docker_logs() { check_docker_logs() {
echo "Checking Docker logs for large files..." echo "Checking Docker logs for large files..." | tee -a "$LOG_FILE"
large_logs=$(docker ps -q --filter "status=exited" | xargs -I {} docker inspect --format '{{.LogPath}}' {} | xargs -I {} sudo find {} -type f -size +1G) large_logs=$(docker ps -q --filter "status=exited" | xargs -I {} docker inspect --format '{{.LogPath}}' {} | xargs -I {} sudo find {} -type f -size +1G)
if [ -n "$large_logs" ]; then if [ -n "$large_logs" ]; then
echo "The following Docker logs are larger than 1GB:" echo "The following Docker logs are larger than 1GB:" | tee -a "$LOG_FILE"
echo "$large_logs" echo "$large_logs" | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
echo "Consider setting up logrotate to manage Docker logs." echo "Consider setting up logrotate to manage Docker logs." | tee -a "$LOG_FILE"
echo "To truncate all Docker logs, run:" echo "To truncate all Docker logs, run:" | tee -a "$LOG_FILE"
echo 'sudo find /var/lib/docker/containers/ -type f -name "*.log" -exec truncate -s 0 {} \;' echo 'sudo find /var/lib/docker/containers/ -type f -name "*.log" -exec truncate -s 0 {} \;' | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
else else
echo "No large Docker logs found." echo "No large Docker logs found." | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
fi fi
} }
@ -59,19 +65,19 @@ check_docker_logs() {
list_large_directories() { list_large_directories() {
local directory=$1 local directory=$1
local size_limit=$2 local size_limit=$2
echo "Directories in $directory consuming more than ${size_limit}GB:" echo "Directories in $directory consuming more than ${size_limit}GB:" | tee -a "$LOG_FILE"
sudo du -ahx $directory 2>/dev/null | awk -v limit=$size_limit '{ sudo du -ahx "$directory" 2>/dev/null | awk -v limit="$size_limit" '{
size=$1; unit=substr(size, length(size)); size=$1; unit=substr(size, length(size));
size_val=substr(size, 1, length(size)-1); size_val=substr(size, 1, length(size)-1);
if ((unit=="G" && size_val+0 > limit) || (unit=="T" && size_val*1024 > limit)) { if ((unit=="G" && size_val+0 > limit) || (unit=="T" && size_val*1024 > limit)) {
print print
} }
}' }' | tee -a "$LOG_FILE"
echo echo | tee -a "$LOG_FILE"
} }
# Estimate storage savings # Estimate storage savings
echo "Estimating potential storage savings..." echo "Estimating potential storage savings..." | tee -a "$LOG_FILE"
estimate_apt_cache_size estimate_apt_cache_size
estimate_old_packages_size estimate_old_packages_size
estimate_journal_size estimate_journal_size
@ -82,10 +88,20 @@ estimate_docker_volumes_size
check_docker_logs check_docker_logs
# List large directories # List large directories
echo "Listing directories consuming more than 5GB and 10GB:" echo "Listing directories consuming more than 5GB and 10GB:" | tee -a "$LOG_FILE"
list_large_directories / 5 list_large_directories / 5
list_large_directories /home 5 list_large_directories /home 5
list_large_directories / 10 list_large_directories / 10
list_large_directories /home 10 list_large_directories /home 10
echo "Storage savings estimation and large directory listing completed." echo "Storage savings estimation and large directory listing completed." | tee -a "$LOG_FILE"
# Upload the log file to Hastebin
echo "Uploading report to Hastebin..." | tee -a "$LOG_FILE"
response=$(curl -s -X POST -T "$LOG_FILE" "$HASTE_URL")
if [[ $response == *"key"* ]]; then
key=$(echo "$response" | jq -r '.key')
echo "Report available at: $HASTE_URL/$key" | tee -a "$LOG_FILE"
else
echo "Failed to upload report to Hastebin. Response: $response" | tee -a "$LOG_FILE"
fi