← back to Watches
scripts/cron-setup.sh
126 lines
#!/bin/bash
################################################################################
# OMEGA WATCHES - CRON JOBS SETUP
# Configures automated backups and health checks
################################################################################
set -euo pipefail
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'
APP_DIR="/root/Projects/watches"
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
log_info() {
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
print_header() {
echo -e "${BLUE}"
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║ OMEGA WATCHES - CRON JOBS SETUP ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
}
# Backup current crontab
backup_crontab() {
log_info "Backing up current crontab..."
crontab -l > /tmp/crontab.backup.$(date +%Y%m%d_%H%M%S) 2>/dev/null || true
log "Crontab backed up ✓"
}
# Create cron jobs
create_cron_jobs() {
log_info "Creating cron jobs..."
# Get existing crontab or create empty
crontab -l > /tmp/omega-cron.tmp 2>/dev/null || echo "" > /tmp/omega-cron.tmp
# Remove existing omega-watches jobs
sed -i '/omega-watches/d' /tmp/omega-cron.tmp
sed -i '/backup-automation/d' /tmp/omega-cron.tmp
# Add new jobs
cat >> /tmp/omega-cron.tmp << EOF
# ============================================================================
# OMEGA WATCHES - Automated Tasks
# ============================================================================
# Daily backup at 2:00 AM
0 2 * * * $APP_DIR/scripts/backup-automation.sh daily >> $APP_DIR/logs/cron-backup.log 2>&1
# Weekly backup every Sunday at 3:00 AM
0 3 * * 0 $APP_DIR/scripts/backup-automation.sh weekly >> $APP_DIR/logs/cron-backup.log 2>&1
# Monthly backup on 1st of month at 4:00 AM
0 4 1 * * $APP_DIR/scripts/backup-automation.sh monthly >> $APP_DIR/logs/cron-backup.log 2>&1
# Health check every 5 minutes
*/5 * * * * curl -f http://localhost:7500/api/health > /dev/null 2>&1 || echo "Health check failed at \$(date)" >> $APP_DIR/logs/health-check.log
# Clean old logs every day at 1:00 AM (keep last 30 days)
0 1 * * * find $APP_DIR/logs -name "*.log" -mtime +30 -delete
# PM2 save every hour (backup PM2 process list)
0 * * * * pm2 save --force > /dev/null 2>&1
# Verify backups every Monday at 5:00 AM
0 5 * * 1 $APP_DIR/scripts/backup-automation.sh verify >> $APP_DIR/logs/cron-verify.log 2>&1
EOF
# Install new crontab
crontab /tmp/omega-cron.tmp
# Cleanup
rm -f /tmp/omega-cron.tmp
log "Cron jobs created ✓"
}
# Display installed jobs
show_cron_jobs() {
echo ""
log "${GREEN}╔════════════════════════════════════════════════════════════════╗${NC}"
log "${GREEN}║ CRON JOBS SETUP COMPLETE! ║${NC}"
log "${GREEN}╚════════════════════════════════════════════════════════════════╝${NC}"
echo ""
log_info "Installed Cron Jobs:"
echo ""
crontab -l | grep -A 20 "OMEGA WATCHES"
echo ""
log_info "Log Files:"
echo " Backup logs: $APP_DIR/logs/cron-backup.log"
echo " Health check: $APP_DIR/logs/health-check.log"
echo " Verification: $APP_DIR/logs/cron-verify.log"
echo ""
log_info "Useful Commands:"
echo " List cron jobs: crontab -l"
echo " Edit cron jobs: crontab -e"
echo " View logs: tail -f $APP_DIR/logs/cron-*.log"
echo ""
}
# Main function
main() {
print_header
backup_crontab
create_cron_jobs
show_cron_jobs
}
# Run main
main "$@"