Why We Do Disk Space Checks and File Cleanup
Why Disk Space Checks are Important
- To monitor and alert when server disks are getting full.
- To prevent system crashes or downtime due to disk full errors.
- To ensure critical applications like databases, web servers, or backups do not fail.
- To maintain overall health and performance of the server.
- Nagios checks help us detect issues early before they impact production.
Why We Need to Remove Large and Old Files
- Disk space fills up over time with logs, backups, cache, and temp files.
- Old or unnecessary files waste storage and slow down server performance.
- Cleaning up frees space for important system operations and new backups.
- Removing large error logs, old backups, and cache avoids unexpected disk usage spikes.
- Regular cleanup reduces system load and keeps server maintenance under control.
Nagios Disk Space Checks
Check Diskslash
Command: /usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk_slash
Check DiskHome
Command: /usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk_home
check_disk_backup
Command: /usr/local/nagios/libexec/check_nrpe -H localhost -c check_disk_backup
These checks monitor disk usage for /, /home, and backup partitions.
Disk Cleanup Procedures
Clear YUM Cache
Navigate to the YUM cache directory: cd /var/cache/yum/
List files:
ls -ll
Remove a specific file:
rm -f filename
Clean all cached files:
yum clean all
Find Large Files
Find .tar.gz files larger than 300MB
find / -type f -size +300M -iname "*.tar.gz" -exec du -sch {} \; | grep -v total
Find .zip files larger than 200MB
find / -type f -size +200M -iname "*.zip" -exec du -sch {} \; | grep -v total
Find .log files larger than 100MB
find / -type f -size +100M -iname "*.log" -exec du -sch {} \; | grep -v total
Find error_log files larger than 50MB inside /home
find /home -type f -size +50M -iname "*error_log" 2>/dev/null -exec du -sch {} \; | grep -v total
Find php.error.log files larger than 50MB inside /home
find /home -type f -size +50M -iname "*php.error.log" 2>/dev/null -exec du -sch {} \; | grep -v total
Find any files larger than 600MB in /home
find /home/ -type f -size +600000k -exec ls -lh {} \; | awk '{ print $9 ":" $5 }'
Find Large Directories
Find cache* directories larger than 5MB inside /home
find /home -type d -size +5M -name 'cache*' -exec du -sh {} \; | grep -v total
Find .trash* directories larger than 1MB inside /home
find /home -type d -name '.trash*' -exec du -sh {} \; | awk '$1 > "1" {print}'
Remove Specific Log Files
Check files starting with logs.21978
ls -lah | grep logs.21978
Remove files starting with logs.21978:
find . -maxdepth 1 -type f -name 'logs.21978*' -exec rm -fv {} +
Remove Files by Date Range
List files created between 1st Jan 2024 and 31st Mar 2024:
find . -type f -newermt '01 jan 2024 00:00:00' -not -newermt '31 mar 2024 00:00:00' -ls
Delete files created between 1st Jun 2021 and 31st Dec 2023:
find . -type f -newermt '01 jun 2021 00:00:00' -not -newermt '31 dec 2023 00:00:00' -delete
Delete .zip files created between 1st Jan 2024 and 1st Apr 2024:
find . -type f -name "*.zip" -newermt '01 jan 2024 00:00:00' -not -newermt '01 apr 2024 00:00:00' -delete
Notes
- Always verify files with ls or find before running delete commands.
- Use du -sh to check folder sizes.
- Take backups if needed before removing important files.