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