107 lines
2.9 KiB
Text
107 lines
2.9 KiB
Text
```bash
|
|
#!/bin/bash
|
|
|
|
# Script: purge-cozy.sh
|
|
# Purpose: Clean up temporary files and logs at midnight
|
|
# This script should be scheduled as a cron job to run daily at midnight
|
|
|
|
# Set working directory
|
|
cd /path/to/your/script/directory || exit 1
|
|
|
|
# Define log file
|
|
LOG_FILE="/var/log/purge-cozy.log"
|
|
|
|
# Function to log messages
|
|
log_message() {
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
|
|
}
|
|
|
|
# Start logging
|
|
log_message "Starting purge-cozy.sh script execution"
|
|
|
|
# Remove temporary files older than 7 days
|
|
log_message "Removing temporary files older than 7 days"
|
|
find /tmp -type f -mtime +7 -delete 2>>"$LOG_FILE" || log_message "Warning: find command failed"
|
|
|
|
# Clean up log files older than 30 days
|
|
log_message "Cleaning up log files older than 30 days"
|
|
find /var/log -name "*.log" -mtime +30 -delete 2>>"$LOG_FILE" || log_message "Warning: log cleanup failed"
|
|
|
|
# Remove cache directories (example for user cache)
|
|
log_message "Clearing user cache directories"
|
|
find /home -type d -name ".cache" -mtime +7 -exec rm -rf {} + 2>>"$LOG_FILE" || log_message "Warning: cache cleanup failed"
|
|
|
|
# Optional: Clean up specific application directories
|
|
# log_message "Cleaning up cozy application data"
|
|
# find /var/lib/cozy -type f -mtime +30 -delete 2>>"$LOG_FILE" || log_message "Warning: cozy data cleanup failed"
|
|
|
|
# Remove empty directories (excluding important system directories)
|
|
log_message "Removing empty directories"
|
|
find /tmp -type d -empty -delete 2>>"$LOG_FILE" || log_message "Warning: empty directory cleanup failed"
|
|
|
|
# Display disk usage after cleanup
|
|
log_message "Disk usage after cleanup:"
|
|
df -h | tee -a "$LOG_FILE"
|
|
|
|
# End logging
|
|
log_message "purge-cozy.sh script execution completed"
|
|
```
|
|
|
|
To set up the cron job:
|
|
|
|
1. First, make your script executable:
|
|
```bash
|
|
chmod +x purge-cozy.sh
|
|
```
|
|
|
|
2. Edit your crontab:
|
|
```bash
|
|
sudo crontab -e
|
|
```
|
|
|
|
3. Add this line to run the script every midnight:
|
|
```bash
|
|
0 0 * * * /path/to/purge-cozy.sh
|
|
```
|
|
|
|
4. Save and exit (in nano editor: Ctrl+X, then Y, then Enter)
|
|
|
|
Alternative method using systemd timer (modern approach):
|
|
```bash
|
|
# Create a service file: /etc/systemd/system/purge-cozy.service
|
|
[Unit]
|
|
Description=Clean up temporary files and logs
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/path/to/purge-cozy.sh
|
|
User=root
|
|
```
|
|
|
|
```bash
|
|
# Create a timer file: /etc/systemd/system/purge-cozy.timer
|
|
[Unit]
|
|
Description=Run purge-cozy script daily at midnight
|
|
Requires=purge-cozy.service
|
|
|
|
[Timer]
|
|
OnCalendar=daily
|
|
Persistent=true
|
|
|
|
[Install]
|
|
WantedBy=timers.target
|
|
```
|
|
|
|
```bash
|
|
# Enable and start the timer
|
|
sudo systemctl enable purge-cozy.timer
|
|
sudo systemctl start purge-cozy.timer
|
|
```
|
|
|
|
Key considerations:
|
|
- Replace `/path/to/your/script/directory` with actual path
|
|
- Adjust cleanup rules based on your specific needs
|
|
- Ensure script has proper permissions to access directories
|
|
- Test script manually before scheduling it
|
|
- Monitor log file for any errors during execution
|