Automation Intermediate

Cron Backup Manager

Creates and manages scheduled backup tasks.

Published: April 25, 2024

Detailed Information

This script creates and manages scheduled backup tasks. Automates daily, weekly, or monthly backup processes using cron jobs.

What Does This Script Do?

This script manages backup tasks:

  • Creates daily backup task
  • Creates weekly backup task
  • Creates monthly backup task
  • Lists current tasks
  • Removes tasks
  • Creates backup scripts
  • Configures cron jobs

Why Should You Use It?

Scheduled backup is critical for data security:

  • Automation: No manual intervention required
  • Flexibility: Different scheduling options
  • Management: Easily manage tasks

How to Use

Step-by-Step Usage Guide

1. Run Script

chmod +x cron_backup.sh
./cron_backup.sh

2. Select from Menu

The script will show you a menu:

  • 1: Create daily backup task
  • 2: Create weekly backup task
  • 3: Create monthly backup task
  • 4: List current tasks
  • 5: Remove tasks

3. Specify Source Directory

Enter directory to backup.

Requirements

Requirements

  • cron: Cron service must be running
  • tar: For compression

Use Cases

Use Cases

1. Automated Backup

Create regular backup tasks.

2. Multiple Backups

Backup different directories with different schedules.

Examples

Usage Examples

Example 1: Daily Backup

./cron_backup.sh
# Option: 1
# Source: /var/www/html

Code

#!/bin/bash

# Cron Backup Manager

SCRIPT_DIR="/opt/backup-scripts"
BACKUP_DIR="/backup"

mkdir -p "$SCRIPT_DIR"
mkdir -p "$BACKUP_DIR"

echo "Cron Backup Manager"
echo "==================="
echo ""
echo "1. Create daily backup job"
echo "2. Create weekly backup job"
echo "3. Create monthly backup job"
echo "4. List current backup jobs"
echo "5. Remove backup job"
echo ""
read -p "Select option: " OPTION

case $OPTION in
    1)
        read -p "Source directory: " SOURCE
        CRON_TIME="0 2 * * *"
        JOB_NAME="daily_backup"
        ;;
    2)
        read -p "Source directory: " SOURCE
        CRON_TIME="0 3 * * 0"
        JOB_NAME="weekly_backup"
        ;;
    3)
        read -p "Source directory: " SOURCE
        CRON_TIME="0 4 1 * *"
        JOB_NAME="monthly_backup"
        ;;
    4)
        echo "Current backup jobs:"
        crontab -l | grep backup
        exit 0
        ;;
    5)
        crontab -l | grep -v backup | crontab -
        echo "Backup jobs removed"
        exit 0
        ;;
esac

cat > "$SCRIPT_DIR/${JOB_NAME}.sh" << EOF
#!/bin/bash
DATE=\$(date +%Y%m%d_%H%M%S)
tar -czf "$BACKUP_DIR/${JOB_NAME}_\${DATE}.tar.gz" "$SOURCE"
find "$BACKUP_DIR" -name "${JOB_NAME}_*.tar.gz" -mtime +30 -delete
EOF

chmod +x "$SCRIPT_DIR/${JOB_NAME}.sh"

(crontab -l 2>/dev/null; echo "$CRON_TIME $SCRIPT_DIR/${JOB_NAME}.sh") | crontab -

echo "✓ Backup job created: $JOB_NAME"
echo "Schedule: $CRON_TIME"
echo "Script: $SCRIPT_DIR/${JOB_NAME}.sh"

Usage

chmod +x cron_backup.sh
./cron_backup.sh

# List current jobs
crontab -l

Troubleshooting

Troubleshooting

Problem: Cron job not running

Solution: Check cron service:

sudo systemctl status cron

Tags

cron backup automation scheduled task