Back to all articles
Automation

Automating Linux server Backups with Cron Jobs

Set up automated backups for your Linux server using cron jobs to ensure your data is always safe and recoverable.

January 13, 2025
12 min read

Automating Linux server Backups with Cron Jobs

Regular backups are essential for protecting your data. In this guide, you'll learn how to automate Linux server backups using cron jobs.

Why Automate Backups?

Manual backups are:

  • Easy to forget
  • Inconsistent
  • Time-consuming
  • Prone to human error

Automated backups ensure your data is always protected without manual intervention.

Step 1: Create a Backup Script

Create a backup script at /usr/local/bin/backup.sh:

#!/bin/bash

# Configuration
BACKUP_DIR="/var/backups"
DATE=$(date +%Y%m%d_%H%M%S)
MYSQL_USER="root"
MYSQL_PASS="your_password"

# Create backup directory
mkdir -p $BACKUP_DIR

# Backup databases
mysqldump -u $MYSQL_USER -p$MYSQL_PASS --all-databases > $BACKUP_DIR/db_$DATE.sql

# Backup website files
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/html

# Remove backups older than 7 days
find $BACKUP_DIR -type f -mtime +7 -delete

echo "Backup completed: $DATE"

Make it executable:

sudo chmod +x /usr/local/bin/backup.sh

Step 2: Test the Backup Script

Run the script manually to ensure it works:

sudo /usr/local/bin/backup.sh

Check the backup directory:

ls -lh /var/backups

Step 3: Create a Cron Job

Edit the crontab:

sudo crontab -e

Add a line to run backups daily at 2 AM:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Understanding Cron Syntax

* * * * * command
│ │ │ │ │
│ │ │ │ └─── Day of week (0-7, Sunday=0 or 7)
│ │ │ └───── Month (1-12)
│ │ └─────── Day of month (1-31)
│ └───────── Hour (0-23)
└─────────── Minute (0-59)

Common Schedules

  • 0 2 * * * - Daily at 2 AM
  • 0 */6 * * * - Every 6 hours
  • 0 0 * * 0 - Weekly on Sunday at midnight
  • 0 0 1 * * - Monthly on the 1st at midnight

Step 4: Monitor Backup Logs

View backup logs:

tail -f /var/log/backup.log

Step 5: Test Restoration

Always test that you can restore from backups:

# Restore database
mysql -u root -p < /var/backups/db_20250113_020000.sql

# Extract files
tar -xzf /var/backups/files_20250113_020000.tar.gz -C /tmp/restore

Advanced: Remote Backups

Store backups remotely using rsync:

#!/bin/bash
rsync -avz /var/backups/ user@remote-server:/backups/

Or upload to cloud storage using rclone.

Conclusion

Automated backups protect your Linux server from data loss. With Gumpbox, you can easily manage cron jobs through an intuitive interface without editing crontab files manually.

Next Steps

Ready to simplify your Linux server management?

Gumpbox makes server administration effortless with an intuitive interface designed for developers.

Get Started