cozy/purge-job.cron

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