Product

The 3-2-1 Backup Rule: Automating Off-Site VPS Backups to S3/Wasabi

ReadyServer Team January 08, 2026 14 min read
The 3-2-1 Backup Rule: Automating Off-Site VPS Backups to S3/Wasabi

Data loss is not a question of if, but when. Whether you are running a high-traffic WordPress site, a custom web application, or a database on a Virtual Private Server (VPS), the integrity of your data is paramount. In the world of system administration, relying on luck is a strategy for failure. This is where the time-tested 3-2-1 backup rule comes into play.

In this guide, we will explore how to implement this gold standard of data protection by automating off-site backups from your VPS to object storage solutions like Amazon S3 or Wasabi. By the end of this article, you will understand not just the theory, but the practical steps to sleep soundly knowing your server data is secure.

Decoding the 3-2-1 Backup Rule

Before diving into scripts and cloud buckets, we must establish the foundational philosophy of VPS data protection. The 3-2-1 rule is a concept that has survived decades of technological change because of its simplicity and effectiveness.

The Core Components: 3, 2, and 1

The rule dictates three specific requirements for your data:

Component Requirement VPS Example
3 Copies Maintain at least three copies of your data Production data + 2 backups
2 Media Types Store on at least two different storage types VPS SSD + Object storage
1 Off-Site Keep one backup in a separate physical location Cloud storage (S3/Wasabi)

Why It Remains the Industry Standard

You might wonder: is this rule still relevant in the age of the cloud? Absolutely. The 3-2-1 backup rule eliminates single points of failure.

If you keep all your backups on the same server as your website, a hack or file system corruption destroys both. If you keep them on an external drive attached to the VPS, a hardware failure could destroy both. By forcing separation, we ensure resilience for your VPS hosting environment. This is especially critical when running sensitive workloads like self-hosted AI models.

The Vulnerability of Virtual Private Servers

Many VPS users operate under a false sense of security. They believe that because their data is "in the cloud," it is automatically safe. This is a dangerous misconception.

Why Provider Snapshots Are Not Enough

Most VPS providers offer a "snapshot" feature. While convenient, snapshots have critical limitations for your server backup strategy:

  • Same infrastructure storage: Snapshots are often stored within the same data center as your VPS
  • Account-level risk: If your account is compromised or deleted, snapshots vanish with it
  • Periodic capture: Snapshots may not capture changes made in the last few hours
  • Provider dependency: If the provider suffers a catastrophic failure, your backups are lost

The Risks of Single-Point Failure

Relying solely on your VPS hosting provider creates a single point of failure. We have seen instances where:

  • Hosting providers went out of business overnight
  • Billing disputes led to immediate data deletion
  • Data center incidents destroyed multiple redundant copies
  • Account compromises wiped both production and backup data

By pushing data to a third-party storage provider, you insulate your VPS from provider-specific risks.

Selecting Your Off-Site Destination: S3 vs. Wasabi

To satisfy the "1" in the 3-2-1 rule (off-site storage), object storage is the ideal solution for VPS backups. It is scalable, durable, and accessible via API. The two leading contenders are Amazon S3 and Wasabi.

Amazon S3: The Feature-Rich Heavyweight

Amazon Simple Storage Service (S3) is the market leader for cloud backup solutions. It offers:

  • Durability: 99.999999999% (eleven 9s) data durability
  • Storage classes: Standard, Intelligent-Tiering, Glacier for archival
  • Lifecycle policies: Automatic transitions between storage tiers
  • Integration: Works with virtually every backup tool in existence

If you need advanced lifecycle policies or integration with other AWS services, S3 is the superior choice for your VPS backup strategy.

Wasabi: The Affordable Challenger

Wasabi has disrupted the market by positioning itself as "hot cloud storage" that is significantly cheaper than S3—often 80% less expensive.

Key advantages for VPS backups:

  • No egress fees: Downloading your data is free
  • No API request charges: Unlimited operations at no extra cost
  • S3-compatible API: Works with existing S3 tools and scripts
  • Flat-rate pricing: Predictable costs for backup storage

Cost Comparison for VPS Backup Storage

Provider Storage (1TB/month) Egress (100GB) API Requests
Amazon S3 Standard ~$23 ~$9 Per-request fees
Wasabi ~$7 Free Free

For most VPS backup scenarios, Wasabi is the more economical choice, whereas S3 provides deeper archival options via Glacier.

Essential Tools for VPS Backup Automation

We do not want to manually transfer files every night. We need "set it and forget it" automation for our VPS hosting environment. Two command-line tools stand out for Linux VPS environments.

Rclone: The Swiss Army Knife

Rclone is widely regarded as "rsync for cloud storage." It is the most versatile tool for VPS backup automation:

  • 40+ cloud providers: Supports S3, Wasabi, Google Cloud, Azure, and more
  • Checksum verification: Ensures data integrity during transfers
  • Bandwidth limiting: Prevents backups from affecting server performance
  • Encryption: Built-in client-side encryption via "Crypt" remotes

Rclone allows you to sync a folder on your VPS directly to a cloud bucket with a single command.

Restic: Modern, Fast, and Secure

While Rclone syncs files, Restic is a proper backup program designed for VPS environments:

  • Deduplication: Only stores changes, saving storage space
  • Encryption by default: All backups are encrypted before leaving your server
  • Snapshots: Point-in-time recovery with efficient storage
  • Rclone backend: Can use Rclone as a storage backend, combining both tools

For comprehensive VPS backup solutions, Restic with an Rclone backend provides the best of both worlds.

Step-by-Step Guide to Automating VPS Backups

Now, let's implement this on your VPS. We will assume you are using a Linux-based virtual private server (Ubuntu/Debian) and an S3-compatible provider like Wasabi.

Step 1: Preparing Your Environment and Credentials

First, generate API keys from your cloud provider:

  1. Log in to your S3 or Wasabi console
  2. Create a new "Bucket" (e.g., vps-backups-2026)
  3. Navigate to the Access Keys section
  4. Generate an Access Key and a Secret Key

Important: Save these credentials immediately. You will not be able to see the secret key again.

Step 2: Installing Rclone on Your VPS

Install Rclone on your VPS server:

# Install via package manager
sudo apt update
sudo apt install rclone -y

# Or install the latest version via official script
curl https://rclone.org/install.sh | sudo bash

Step 3: Configuring Rclone for S3/Wasabi

Configure Rclone to connect to your backup storage:

rclone config

Follow the interactive prompts:

  1. Select n for new remote
  2. Name it (e.g., wasabi or s3backup)
  3. Choose s3 as the storage type
  4. Select your provider (Wasabi, AWS, etc.)
  5. Enter your Access Key and Secret Key
  6. Set the region and endpoint

For Wasabi, use the endpoint: s3.wasabisys.com (or your regional endpoint).

Test the connection:

rclone lsd wasabi:

This should list your buckets if configured correctly.

Step 4: Creating the Backup Script

Create a shell script that handles the automated backup process for your VPS:

sudo nano /usr/local/bin/vps-backup.sh

Add the following script:

#!/bin/bash
# =============================================================================
# VPS Backup Script - 3-2-1 Rule Implementation
# Backs up databases and files to S3-compatible storage
# =============================================================================

# Configuration
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_DIR="/tmp/vps-backups"
LOG_FILE="/var/log/vps-backup.log"

# Database credentials (use environment variables in production)
MYSQL_USER="backup_user"
MYSQL_PASSWORD="your_secure_password"

# Rclone remote and bucket
RCLONE_REMOTE="wasabi:your-backup-bucket"

# Directories to backup
WEB_ROOT="/var/www/html"
CONFIG_DIR="/etc/nginx"

# Retention: keep backups for 30 days
RETENTION_DAYS=30

# =============================================================================
# Functions
# =============================================================================

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

cleanup_local() {
    log "Cleaning up local temporary files..."
    rm -rf "$BACKUP_DIR"
}

# =============================================================================
# Main Backup Process
# =============================================================================

log "=========================================="
log "Starting VPS backup: $TIMESTAMP"
log "=========================================="

# Create temporary backup directory
mkdir -p "$BACKUP_DIR"

# 1. Backup MySQL/MariaDB databases
log "Backing up databases..."
if command -v mysqldump &> /dev/null; then
    mysqldump -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" \
        --all-databases \
        --single-transaction \
        --quick \
        --lock-tables=false \
        2>/dev/null | gzip > "$BACKUP_DIR/databases-$TIMESTAMP.sql.gz"

    if [ ${PIPESTATUS[0]} -eq 0 ]; then
        log "Database backup completed successfully"
    else
        log "WARNING: Database backup may have encountered errors"
    fi
else
    log "MySQL/MariaDB not found, skipping database backup"
fi

# 2. Backup web files
log "Backing up web files from $WEB_ROOT..."
if [ -d "$WEB_ROOT" ]; then
    tar -czf "$BACKUP_DIR/webroot-$TIMESTAMP.tar.gz" \
        --exclude='*.log' \
        --exclude='node_modules' \
        --exclude='.git' \
        "$WEB_ROOT" 2>/dev/null
    log "Web files backup completed"
else
    log "Web root directory not found: $WEB_ROOT"
fi

# 3. Backup server configuration
log "Backing up server configuration..."
tar -czf "$BACKUP_DIR/configs-$TIMESTAMP.tar.gz" \
    "$CONFIG_DIR" \
    /etc/crontab \
    /etc/ssl/certs 2>/dev/null
log "Configuration backup completed"

# 4. Upload to cloud storage
log "Uploading backups to $RCLONE_REMOTE..."
rclone copy "$BACKUP_DIR" "$RCLONE_REMOTE/$TIMESTAMP" \
    --progress \
    --transfers 4 \
    --checkers 8 \
    --log-file="$LOG_FILE" \
    --log-level INFO

if [ $? -eq 0 ]; then
    log "Upload completed successfully"
else
    log "ERROR: Upload failed!"
    cleanup_local
    exit 1
fi

# 5. Clean up old backups (retention policy)
log "Applying retention policy: removing backups older than $RETENTION_DAYS days..."
rclone delete "$RCLONE_REMOTE" \
    --min-age "${RETENTION_DAYS}d" \
    --rmdirs \
    --log-file="$LOG_FILE"

# 6. Clean up local temporary files
cleanup_local

log "=========================================="
log "Backup completed successfully!"
log "=========================================="

exit 0

Make the script executable:

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

Step 5: Testing the Backup Script

Before automating, test the script manually on your VPS:

sudo /usr/local/bin/vps-backup.sh

Verify the backup appeared in your cloud storage:

rclone ls wasabi:your-backup-bucket/

Step 6: Automating with Cron Jobs

Once your script is tested, schedule it using cron on your VPS server:

sudo crontab -e

Add a line to run the backup every day at 3:00 AM:

# Daily VPS backup at 3:00 AM
0 3 * * * /usr/local/bin/vps-backup.sh >> /var/log/vps-backup.log 2>&1

# Weekly full backup on Sundays at 2:00 AM
0 2 * * 0 /usr/local/bin/vps-backup.sh --full >> /var/log/vps-backup.log 2>&1

This ensures that while you sleep, your VPS is diligently packaging your data and shipping it to safety.

Security and Encryption Protocols

Sending data over the internet requires strict security measures for your VPS backups. You must ensure that even if someone intercepts your data or breaches your cloud bucket, they cannot read your sensitive information.

Client-Side Encryption with Rclone

Never upload raw, unencrypted data to the cloud. Configure Rclone's built-in encryption:

rclone config
  1. Create a new remote
  2. Select crypt as the storage type
  3. Set your existing S3/Wasabi remote as the backend
  4. Choose encryption for filenames and directory names
  5. Set a strong password (store this securely!)

Now use the encrypted remote for backups:

rclone copy /var/www/html wasabi-encrypted:backups/

The cloud provider only sees encrypted filenames and content—your VPS data remains private.

Managing Access Policies (IAM)

Practice the principle of least privilege for your VPS backup credentials:

Recommended permissions for backup API keys:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::your-backup-bucket",
                "arn:aws:s3:::your-backup-bucket/*"
            ]
        }
    ]
}

This limits damage if your VPS is compromised and the keys are stolen—attackers cannot access other buckets or services.

The Forgotten Phase: Disaster Recovery Testing

The most dangerous backup is the one that has never been tested. You do not want to discover your VPS backups are corrupt precisely when you need them most.

Monthly Verification Schedule

Implement a verification routine for your VPS hosting environment:

# 1. Download the latest backup
rclone copy wasabi:your-backup-bucket/latest /tmp/restore-test/

# 2. Decrypt if using encryption
rclone copy wasabi-encrypted:latest /tmp/restore-test/

# 3. Extract and verify files
cd /tmp/restore-test
gunzip databases-*.sql.gz
tar -xzf webroot-*.tar.gz

# 4. Test database import on a test server
mysql -u root -p test_database < databases-*.sql

# 5. Verify application loads correctly

Backup Verification Checklist

Test Frequency Pass Criteria
File integrity check Weekly Checksums match
Database restore Monthly Data imports without errors
Full application restore Quarterly App runs on test VPS
Recovery time test Quarterly Meets RTO requirements

If any test fails, your backup strategy is not working, regardless of what the logs say.

Monitoring and Alerting

Set up monitoring to ensure your VPS backups are running successfully:

Simple Email Alerts

Add to the end of your backup script:

# Send email notification
if [ $? -eq 0 ]; then
    echo "VPS backup completed successfully at $(date)" | \
        mail -s "✓ VPS Backup Success" [email protected]
else
    echo "VPS backup FAILED at $(date). Check logs!" | \
        mail -s "✗ VPS Backup FAILED" [email protected]
fi

Monitoring Backup Age

Create a simple check script:

#!/bin/bash
# Alert if no backup in last 25 hours
LATEST=$(rclone lsf wasabi:your-backup-bucket/ --max-depth 1 | sort | tail -1)
# Add your alerting logic here

Conclusion: Protect Your VPS Investment

Implementing the 3-2-1 backup rule by automating VPS backups to S3 or Wasabi is one of the highest-leverage activities a system administrator can perform. It transforms a potential catastrophe into a minor inconvenience.

Key takeaways for VPS backup success:

  • Follow the 3-2-1 rule: 3 copies, 2 media types, 1 off-site location
  • Automate everything: Use Rclone and cron for hands-off backup automation
  • Encrypt before upload: Never send unencrypted data to cloud storage
  • Test regularly: A backup that cannot be restored is worthless
  • Monitor actively: Know immediately if backups fail

By combining the low cost of object storage with the power of automation tools like Rclone or Restic, you build a fortress around your VPS data. Do not wait for a server crash or a malicious attack to teach you the value of redundancy.

Ready to secure your data with reliable VPS hosting? Explore our VPS plans with automatic snapshots, full root access, and NVMe SSD storage to build your bulletproof backup infrastructure today.

vps backup vps hosting server backup disaster recovery rclone backup s3 backup wasabi storage automated backup linux vps data protection cloud backup backup automation singapore vps

Share this article: