MSP360 CloudBerry Backup
Posted by Superadmin on June 04 2026 06:50:41

MSP360 CloudBerry Backup

 

 

Here's a comprehensive overview of MSP360 / CloudBerry Backup and how it compares and integrates with our security platform.


MSP360 / CloudBerry Backup — Complete Overview


What It Is

MSP360 Managed Backup is a centralized, multi-platform backup solution for MSPs. It offers automated backups, compliance-ready security, white-labeling, and seamless integration with MSP360 RMM and PSA tools. With flexible pricing and vendor-neutral storage support for Amazon S3, Microsoft Azure, Wasabi, Backblaze B2, and more, it enhances data protection while optimizing costs. Acronis 

CloudBerry Backup has been rebranded to MSP360 Backup. The platform originally built its reputation as a lightweight, storage-agnostic backup tool before evolving into a full MSP management suite. PeerSpot 


Core Features

Backup Capabilities

MSP360 Backup for Windows supports all popular cloud storage providers and classes, including Amazon S3, Amazon S3 Glacier, Microsoft Azure, Google Cloud, Backblaze B2, Wasabi, various S3-compatible storage, and many others. It includes Forever Forward Incremental backup schedule, Grandfather-Father-Son (GFS) retention policy, backups to local drives and NAS-like storage devices, image-based backups, Microsoft SQL Server backups, Microsoft Exchange backups, Synthetic Full Backup for file, image-based, VMware, Hyper-V backups, Immutability (Object lock), Bare-metal recovery (recovery disks and USB drives), cloud backups (cloud-to-cloud and cloud-to-local), and Changed Block Tracking for image-based backups. SiliconANGLE 

Security & Management

Key features include remote management and monitoring, white-labeling, 256-bit AES encryption, image-based backup, encryption and compression, ACL Editor, ransomware protection, and a disk capacity dashboard. Help Net Security 

MSP & Multi-Tenant

MSP360 Managed Backup is a centralized, multi-tenant backup platform that helps service providers automate backup operations, manage multiple customers from a single web console, and protect workloads with flexible recovery options. With white-labeling, integration with MSP360 RMM and PSA capabilities, and vendor-neutral storage support for Amazon S3, Microsoft Azure, Wasabi, Backblaze B2, IDrive e2, and more, it helps MSPs improve data protection, reduce storage lock-in, and control backup costs. Acronis 

Additional Products in the MSP360 Suite

The suite includes a cloud-to-cloud backup and recovery solution supporting all Microsoft 365/Google Workspace components, CloudBerry Drive for mounting and accessing cloud storage as a network drive supporting over 20 different cloud storage providers, and MSP360 Connect — a Windows software for remote control and desktop sharing. Acronis 


Pricing

MSP360 offers a Free Backup tier covering Windows, macOS, and Linux backup with file-level backup. The paid tier starts at $99.50 per year for one user with backup for unlimited computers. Enterprise and MSP pricing is contact-based and scales per workload or per endpoint. Aufieroinformatica 


What Users Say

Overall, MSP360 Backup provides a solid and flexible backup solution, particularly for environments that need control over storage destinations and cost. Its ability to integrate with multiple cloud providers and support a range of backup types makes it well-suited for small to mid-sized businesses and IT-managed environments. The platform performs reliably for routine backups, and the centralized management console is useful for overseeing multiple systems. Acronis 

On the positive side, users love the ability to white-label the product so clients don't know where the software comes from, making it look like an in-house solution. Others describe it as a great product that scales, is fast, and easy to implement. Acronis 

On the negative side, the web interface is described as difficult to navigate for finding backup history, restoring data, and managing licenses. The backup wizard has too many ways to misconfigure, with no easy way to clone configurations across multiple devices or sites. The shift from perpetual license to subscription model also increases long-term cost and reduces ownership flexibility. Acronis 


MSP360 vs Acronis — Head to Head

DimensionMSP360 / CloudBerryAcronis Cyber Protect Cloud
Primary purpose Backup + cloud storage mgmt Backup + AV + EDR + DLP
Built-in AV / EDR ✗ None ✓ AI-based EDR
Built-in DLP ✗ None ✓ Advanced DLP add-on
Storage flexibility ✅ Best-in-class — 20+ providers Good — Acronis Cloud + S3
White-labeling ✅ Full white-label for MSPs Partial
M365 backup ✓ Cloud-to-cloud module ✓ Official API
Image-based backup ✓ Yes ✓ Yes
Ransomware protection Basic — immutability + detection Advanced — AI + auto rollback
RMM / PSA integration ✓ Native MSP360 RMM + PSA Third-party integrations
Pricing model Per user / per endpoint Per workload
Entry price $99.50/yr (unlimited PCs) Contact pricing
Agent count 1 backup agent 1 all-in-one agent
Security depth Backup-only security Full cyber protection
Best for MSPs needing storage flexibility Security-first environments

How MSP360 Fits Into Our Security Platform

MSP360 is a pure backup and storage management play — it deliberately stays out of the security stack. This means it can work alongside our platform rather than replacing components of it:

Our Security Platform          MSP360 Layer
─────────────────────          ─────────────
usb_alerter.py       ──────►  Backup USB audit logs to S3/Azure
threat_response.py   ──────►  Backup threat DB + response logs
Squid access logs    ──────►  Archive to Wasabi/Backblaze (cheap)
Admin databases      ──────►  Daily image backup + SQL backup
Employee portal data ──────►  Backed up with GFS retention
Windows endpoints    ──────►  Image-based bare-metal recovery
Linux servers        ──────►  File + image backup to any cloud
M365 email/files     ──────►  Cloud-to-cloud M365 backup module

Integration script — save as /opt/security-platform/scripts/msp360_backup_check.py:

python
#!/usr/bin/env python3
"""
MSP360 Backup Status Checker
Polls MSP360 API for backup job results and feeds into
our security platform dashboard and alerting
"""

import requests, json, sqlite3, os, smtplib
from datetime import datetime, timedelta
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# ── MSP360 API Config ─────────────────────────────────────────────────
MSP360_URL    = "https://api.mspbackups.com"
MSP360_USER   = "admin@company.com"
MSP360_PASS   = "your_msp360_password"

PLATFORM_DB   = "/var/lib/security-platform/db/backups.db"
SMTP_SERVER   = "smtp.company.com"
SMTP_PORT     = 587
SMTP_USER     = "it-security@company.com"
SMTP_PASS     = "your_smtp_pass"
IT_EMAIL      = "it-security@company.com"

os.makedirs(os.path.dirname(PLATFORM_DB), exist_ok=True)

def get_token():
    resp = requests.post(
        f"{MSP360_URL}/api/Accounts/login",
        json={"UserName": MSP360_USER, "Password": MSP360_PASS}
    )
    return resp.json().get("access_token","")

def get_backup_jobs(token):
    headers = {"Authorization": f"Bearer {token}"}
    resp    = requests.get(
        f"{MSP360_URL}/api/Computers",
        headers=headers
    )
    return resp.json() if resp.status_code == 200 else []

def get_job_history(token, computer_id):
    headers = {"Authorization": f"Bearer {token}"}
    resp    = requests.get(
        f"{MSP360_URL}/api/Computers/{computer_id}/History",
        headers=headers
    )
    return resp.json() if resp.status_code == 200 else []

def init_db():
    conn = sqlite3.connect(PLATFORM_DB)
    conn.execute("""
        CREATE TABLE IF NOT EXISTS backup_jobs (
            id           INTEGER PRIMARY KEY AUTOINCREMENT,
            computer     TEXT,
            plan_name    TEXT,
            status       TEXT,
            started      TEXT,
            finished     TEXT,
            size_gb      REAL,
            error        TEXT,
            synced_at    TEXT
        )""")
    conn.commit()
    conn.close()

def save_jobs(jobs):
    conn = sqlite3.connect(PLATFORM_DB)
    now  = datetime.now().isoformat()
    for j in jobs:
        conn.execute("""
            INSERT INTO backup_jobs
            (computer,plan_name,status,started,finished,size_gb,error,synced_at)
            VALUES (?,?,?,?,?,?,?,?)
        """, (
            j.get("computer",""),
            j.get("plan",""),
            j.get("status",""),
            j.get("started",""),
            j.get("finished",""),
            j.get("size_gb",0),
            j.get("error",""),
            now
        ))
    conn.commit()
    conn.close()

def alert_failed_backups(failed):
    if not failed:
        return
    rows = "".join(f"""
      <tr style='background:#3a1a1a'>
        <td style='padding:8px;color:#e74c3c'>{j['computer']}</td>
        <td style='padding:8px;color:#aaa'>{j['plan']}</td>
        <td style='padding:8px;color:#e74c3c'>{j['status']}</td>
        <td style='padding:8px;color:#888'>{j.get('error','')[:80]}</td>
      </tr>""" for j in failed)
    html = f"""
    <div style="font-family:sans-serif;max-width:620px;margin:auto">
      <div style="background:#c0392b;color:white;padding:16px 20px;
                  border-radius:8px 8px 0 0">
        <h2 style="margin:0">⚠️ Backup Failures Detected — MSP360</h2>
      </div>
      <div style="background:#f9f9f9;padding:20px;border:1px solid #ddd">
        <p>{len(failed)} backup job(s) failed in the last 24 hours.</p>
        <table style="width:100%;border-collapse:collapse;
                      margin-top:14px;background:#1a1d27">
          <tr style="background:#2c2f3e">
            <th style="padding:8px;color:#aaa;text-align:left">Computer</th>
            <th style="padding:8px;color:#aaa;text-align:left">Plan</th>
            <th style="padding:8px;color:#aaa;text-align:left">Status</th>
            <th style="padding:8px;color:#aaa;text-align:left">Error</th>
          </tr>
          {rows}
        </table>
        <p style="margin-top:16px;color:#999;font-size:0.85em">
          Review in MSP360 console: https://console.mspbackups.com
        </p>
      </div>
    </div>"""
    try:
        msg = MIMEMultipart("alternative")
        msg["Subject"] = f"⚠️ {len(failed)} MSP360 Backup Failures — {datetime.now().strftime('%Y-%m-%d')}"
        msg["From"]    = SMTP_USER
        msg["To"]      = IT_EMAIL
        msg.attach(MIMEText(html,"html"))
        with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as s:
            s.starttls()
            s.login(SMTP_USER, SMTP_PASS)
            s.sendmail(SMTP_USER, [IT_EMAIL], msg.as_string())
        print(f"[EMAIL] Alert sent: {len(failed)} failures")
    except Exception as e:
        print(f"[EMAIL ERROR] {e}")

def run():
    init_db()
    print("[*] Checking MSP360 backup status...")
    try:
        token     = get_token()
        computers = get_backup_jobs(token)
        all_jobs  = []
        failed    = []

        for computer in computers:
            cid  = computer.get("ComputerId","")
            name = computer.get("ComputerName","")
            hist = get_job_history(token, cid)

            for job in hist[:5]:   # last 5 jobs per machine
                status = job.get("Status","")
                entry  = {
                    "computer": name,
                    "plan":     job.get("PlanName",""),
                    "status":   status,
                    "started":  job.get("Started",""),
                    "finished": job.get("Finished",""),
                    "size_gb":  round(job.get("DataSize",0)/1e9, 2),
                    "error":    job.get("ErrorMessage",""),
                }
                all_jobs.append(entry)
                if status in ("Failed","Error","Warning"):
                    failed.append(entry)

        save_jobs(all_jobs)
        alert_failed_backups(failed)

        success = len(all_jobs) - len(failed)
        print(f"[✔] Checked {len(computers)} machines")
        print(f"    Success: {success}  Failed: {len(failed)}")

    except Exception as e:
        print(f"[ERROR] MSP360 check failed: {e}")

if __name__ == "__main__":
    run()

Schedule it:

bash
# Check backup status every 6 hours
echo "0 */6 * * * python3 /opt/security-platform/scripts/msp360_backup_check.py \
    >> /var/log/security-platform/msp360.log 2>&1" | sudo crontab -

MSP360 Storage Cost Comparison

One of MSP360's biggest advantages is letting you bring your own storage — picking the cheapest provider rather than paying vendor lock-in rates:

Storage Provider$/TB/month10 TB/monthNotes
Backblaze B2 $6 $60 Cheapest S3-compatible
Wasabi $7 $70 No egress fees
IDrive e2 $4 $40 Cheapest overall
Amazon S3 $23 $230 Most features
Azure Blob $18 $180 Good for Azure shops
Acronis Cloud ~$40+ $400+ Bundled, less flexible
Google Cloud $20 $200 Good lifecycle tiers

MSP360 + Backblaze B2 / Wasabi is a very popular combination in the MSP community for dramatically cutting storage costs compared to bundled vendor clouds.


Deployment for Our Platform

bash
# Linux agent install
wget https://download.msp360.com/latest/msp360-backup-linux.deb
sudo dpkg -i msp360-backup-linux.deb

# Register to MSP360 console
msp360backup --register \
    --user admin@company.com \
    --password your_password \
    --computer-name $(hostname)

# Create backup plan for platform data
msp360backup --create-plan \
    --name "Security Platform Data" \
    --destination s3://your-bucket/backups \
    --schedule daily \
    --time 02:00 \
    --retention 30 \
    --encrypt --password your_backup_key \
    --include /var/lib/security-platform \
    --include /opt/security-platform/scripts \
    --include /etc/squid \
    --include /etc/nginx \
    --include /var/log/security-platform

When to Choose MSP360 Over Acronis

ScenarioChoose MSP360Choose Acronis
Pure backup, already have AV
Need AV + DLP + backup in one
Tight storage budget ✅ (Backblaze B2)
MSP with white-label requirement Partial
Need automated ransomware rollback
Already on AWS/Azure ecosystem Either
Security-first environment
Small team, simple requirements Either
Need EDR / endpoint detection

Recommendation for Our Platform

MSP360 works best as a complementary layer in our security platform rather than a replacement for Acronis. The ideal combination is:

If budget is constrained and you already have separate AV/EDR coverage (e.g. Microsoft Defender, CrowdStrike), then MSP360 alone is a strong, cost-effective backup solution — especially with its vendor-neutral storage flexibility.