JSKIP_TO_CONTENT
  • Help
  • Glossary
  • Tickets
  • EcoSystem Status
Moko Consulting
  • Home
  • News
  • Services
  • Products
  • Jobs
You are here:
  1. Home
  2. Support
  3. MokoSuite
  4. MokoSuiteBackup

MokoSuiteBackup

What is MokoSuiteBackup?

MokoSuiteBackup is a comprehensive backup and restore solution for Joomla 6 (Joomla 4/5 supported). It provides full-site backups (database + files), multiple backup profiles, scheduled tasks, remote storage (FTP, Google Drive, S3), AES-256 encryption, content snapshots, automatic backup-before-update protection, and a standalone restore script.

Key Features

  • Full, database-only, files-only, and differential backup types
  • Multiple backup profiles with independent settings
  • Backup before update & uninstall — a full-screen backup fronts Joomla core updates and any extension update or uninstall, so you always have a fresh restore point without white-screening large sites.
  • Content snapshots & transfer — capture articles, categories and modules and move them between sites as a portable .msbsnap file, or push them master→slave directly via the injection API.
  • Joomla Scheduled Tasks integration plus web-cron for automated backups
  • Remote storage: FTP/FTPS, Google Drive, Amazon S3 (+ Wasabi, B2, MinIO), with retention that prunes remote copies too
  • AES-256 archive encryption
  • MokoRestore standalone restore script for bare-server restores
  • SHA-256 integrity verification
  • Email and ntfy notifications on success, warning and failure
  • REST API compatible with the MokoSuiteBackup MCP server
  • AJAX step-based engine for shared hosting
  • Execution-tuning wizard that paces backups to the host

MokoSuiteBackup Backup Before Update

Details
Category: MokoSuiteBackup
  • Applicable Software: MokoSuiteBackup
  • Min Version Number: 02.64.00
  • Max Version Number: Not Applicable

Update Joomla and your extensions without holding your breath. MokoSuiteBackup takes a fresh, full-screen backup before any core update, install, update or uninstall — on its own page with a real progress bar, never synchronously inside the update request — then hands control back so the action continues. If the backup fails, the action is blocked.

Overview

MokoSuiteBackup can automatically run a full-screen backup before Joomla changes anything — before a Joomla core update, before an extension install, before an extension update, and before an extension uninstall. The backup runs on its own dedicated full-page screen, shows a real progress bar, and then hands control back to Joomla so the original action continues.

The design goal is safety without white-screens: no backup ever runs synchronously inside the core update request. Running a large-site backup inside the update request is exactly what white-screened sites in earlier approaches, so the core-update flow always redirects to the standalone backup screen first.

These pre-action backups are gated on the execution-tuning wizard. While the wizard is pending (MokoSuiteBackup flags it after an install so it can measure the host's real limits), the pre-update, pre-install and pre-uninstall backups do not run — and a skipped pre-action backup is never silent: MokoSuiteBackup raises an admin warning and writes a mokosuitebackup log entry stating that the action continued without a backup. Note: with the wizard pending, updates and installs proceed unprotected until it is run. Running the execution-tuning wizard (in Components > MokoSuiteBackup > Options) restores these backups.

Pre-Install Backup (with Opt-Out)

In addition to the pre-update backup, MokoSuiteBackup can take a backup before an extension install, giving you a fresh restore point in case a new extension damages the site. Because installs are routine, the pre-install backup is presented as an opt-out checkbox on the Install screen (System > Install > Extensions): the “back up before installing” checkbox is offered right where you upload the package, and you can untick it to skip the backup for that install. This sits alongside the existing pre-update and pre-uninstall opt-outs and uses the same full-screen backup flow.

While the execution-tuning wizard is pending, the pre-update, pre-install and pre-uninstall opt-out checkboxes are suppressed — you can't disable a pre-action backup or run a manual one until the wizard has been run.

Turning It On

Configure under Components > MokoSuiteBackup > Options > Pre-Action:

OptionParamDefaultCovers
Backup before updatebackup_before_updateNoJoomla core updates and extension updates
Backup before installbackup_before_installNoExtension installs (with a per-install opt-out checkbox on the Install screen)
Backup before uninstallbackup_before_uninstallNoExtension uninstalls (Extensions > Manage)

The backup runs with the component's default profile (default_profile, defaults to profile 1). These features are Super User only — a non-super-user updating or installing an extension is never intercepted. Pre-update is owned by the System plugin via the component options above; there is no separate per-plugin “before update” toggle.

One Backup Per Update Action

A pre-action backup fires once per Install/Update/Uninstall action, not on a timer. A per-request dedupe guard means a batch update backs up only once, and a one-shot skip flag prevents the client-side and server-side paths from duplicating each other — while the next distinct action still backs up again. The core-update path uses its own session key so it never suppresses extension backups.

How It Works — Joomla Core Updates

For a core update the plugin intercepts server-side (in onAfterRoute) at the last moment before any files change:

  1. The Install the update click is matched on the confirm/updating page.
  2. The browser is redirected to the full-screen backup screen (view=runbackup) with a validated returnurl back to the update page.
  3. The backup runs on its own page.
  4. On return, a small injected script auto-ticks Joomla's "I have taken a backup" checkbox and clicks Install, so the update continues automatically instead of stopping for a second manual click.

How It Works — Extension Installs / Updates / Uninstalls

Extension install/update/uninstall are POST actions carrying a CSRF token and (for update/uninstall) a checked selection, so this path is handled client-side by the plugin's installer-backup.js, injected on Extensions > Install, Extensions > Update and Extensions > Manage. In Joomla 6 the toolbar buttons are web components, so the script uses a capture-phase click listener that runs before the toolbar's own handler:

  1. Intercept the Install/Update/Uninstall action and, for update/uninstall, capture the checked selection into sessionStorage.
  2. Send the browser to the full-screen backup screen with a validated returnurl.
  3. The backup runs, then returns to the original page.
  4. Resume — the script restores the selection and re-fires the action so the real POST proceeds. In Joomla 6 the click handler is bound to the inner button (not the outer task wrapper), and a list-selection button starts disabled until boxchecked fires a change event — the script handles both so the action actually submits. While the action runs, a full-screen “now running — please wait” overlay is shown so you know it is working. The overlay leads with a prominent amber warning triangle above the spinner, reinforcing “do not close this window until the update finishes”.

A server-side fallback still exists for the extension path; when it runs synchronously it raises PHP limits and sets ignore_user_abort(true) so a large-site backup can't exhaust the request. If the client-side redirect can't be built, the script bails without preventing the click, so Joomla's own action proceeds normally.

The Full-Screen Backup Screen

view=runbackup is the shared full-page screen used by both the pre-action flow and the dashboard Backup Now:

  • Auto-starts the stepped backup over AJAX with a full-bleed, Atum-coloured progress bar on a black backdrop.
  • While the backup runs it shows a prominent “do not close this window or switch to another window” warning and a Cancel button. Cancelling requires a double confirmation; on confirm it stops the backup, cancels the record, and returns to the dashboard without continuing any pending action.
  • The returnurl is validated to block open-redirect / javascript: XSS — only a same-host absolute URL or a root-relative path is accepted.
  • Pre-action flow: the screen shows an “Automatically continue when the backup finishes” checkbox, ticked by default. Checked → hands straight back to Joomla and the action continues seamlessly; unticked → stops on a completion panel with a View backup record link (opens in a new window) and a Continue button.
  • Manual Backup Now: shows a View backup record button and Back to dashboard.
  • On failure the action is blocked. The pre-action screen offers only Retry or Back to dashboard — never “continue without backup” — so a broken backup can never let the install/update proceed unprotected.

Notifications

Every pre-action backup surfaces its outcome in the admin as an enqueued message — success, warning, or failure — so a successful pre-action backup is visible, not just failures. A pre-action backup that did not run at all (the tuning wizard is pending, a preflight check failed, the profile is missing, or the run threw) is announced just as loudly: an admin warning plus a mokosuitebackup log entry stating the action continued without a backup.

Last Updated: August 23, 2026
Hits: 6

MokoSuiteBackup Backup Profiles & Types

Details
Category: MokoSuiteBackup
  • Applicable Software: MokoSuiteBackup
  • Min Version Number: 02.64.00
  • Max Version Number: Not Applicable

Backup profiles let each site tailor exactly what gets captured and how. Choose from full, database-only, files-only or differential backup types, then fine-tune archive format, sanitization, filters, extension exclusions, retention and off-site destinations — all per profile. Here's how the profile tabs and default settings fit together.

Backup Types

Set on the profile's General tab (default full):

TypeDatabaseFilesUse Case
FullYesAll filesComplete site snapshot
Database OnlyYesNoQuick DB backup before changes
Files OnlyNoAll filesCode/media backup
DifferentialYes (full)Changed onlyFast daily backups between weekly fulls

Default Backup Directory

Out of the box the default backup directory is now one level above the web root (a sibling of public_html) so that backup archives are not web-accessible. You can still point a profile anywhere — including inside the web root — but the safe out-of-box location keeps archives off the public site by default. Paths support placeholders and are created automatically at backup time.

Default Profile

The component-wide default profile (Options > General, defaults to profile 1) is what runs when a trigger doesn't name a specific profile — including the pre-update / pre-uninstall full-screen backup, the dashboard Backup Now screen, and a web-cron call with no profile_id.

Profile Tabs

  • General: title, description, backup type
  • Archive: format (zip, tar.gz, 7z), compression level, split size, backup directory, archive name format, Include restore script (None / Inside the archive / Outside as a sidecar), encryption password
  • Sanitization: scrub the DB dump — sanitize passwords (with preserve super admin), sanitize emails, sanitize sessions
  • Filters: exclude directories, files (glob wildcards, e.g. *.bak), and database tables
  • Extensions: exclude specific installed extensions from the backup, plus Exclude Development-Version Extensions (see below)
  • Retention: per-profile overrides of the global cleanup age/count (a value of 0 falls back to the global default)
  • Notifications: email recipients, notify user groups, notify on success/failure, plus ntfy topic/server/token

New profiles are pre-populated from the component-wide Profile Defaults (default archive format and the sanitization toggles) in Options; existing saved profiles are loaded unchanged.

Exclude Development-Version Extensions

The Extensions tab includes an Exclude Development-Version Extensions toggle. When enabled, it automatically detects every installed extension on a development or pre-release version — a version tagged -dev, -alpha, -beta or -rc — and strips it from the backup (both its files and its Joomla registry rows), in addition to any extensions you pick manually in the same tab. This is ideal for producing a clean, production-safe archive from a dev or demo site so it can be restored onto production without carrying in-development builds.

Execution Tuning

How a backup is paced into steps (files per step, seconds per step, upload chunk size) is controlled by host-wide Execution Tuning options rather than per-profile settings, and a wizard sets them for you by probing the host. After a fresh install the tuning wizard must be run before interactive backups are allowed (it stays pending across updates until you run it). See MokoSuiteBackup Execution Tuning.

Remote Destinations

Off-site upload is configured per profile with remote destinations (SFTP, FTP, S3, Google Drive, or a Local folder). There is no longer a separate “keep local copy” option — a Local destination IS the local copy: add one to keep the archive on this server, omit it to have the local archive removed after upload. See Remote Storage.

Differential Backups

Compares the current filesystem against a manifest from the last full backup; only new/modified files are included, while the database is always fully dumped. Falls back to a full backup if no base manifest exists.

Last Updated: August 23, 2026
Hits: 8

MokoSuiteBackup CLI Commands

Details
Category: MokoSuiteBackup
  • Applicable Software: MokoSuiteBackup
  • Min Version Number: 02.64.00
  • Max Version Number: Not Applicable

Prefer the terminal? MokoSuiteBackup ships a full set of Joomla console commands to run backups, list records and profiles, restore, clean up old archives, and manage content snapshots — all driven by the same engine as the web UI and ready to drop into cron.

Overview

MokoSuiteBackup provides CLI commands via the Joomla console plugin (plg_console_mokosuitebackup). All commands run through Joomla's console entry point from the site root:

php cli/joomla.php <command> [options]

All commands run through the shared BackupRunner service, producing the same complete / warning / fail outcome as the web UI. A legacy standalone script (administrator/components/com_mokosuitebackup/cli/mokosuitebackup.php) is also bundled for existing cron setups.

CLI backups are one of the automated origins that are not gated by the execution-tuning wizard: even while that wizard is still pending on a site, mokosuitebackup:run keeps running on the conservative defaults, so scheduled and unattended CLI jobs are never blocked.

Commands

mokosuitebackup:run

Run an immediate backup.

php cli/joomla.php mokosuitebackup:run --profile=1 --description="Nightly backup"
OptionShortDefaultDescription
--profile-p1Backup profile ID
--description-dCLI backupBackup description

Exit code is 0 on success, 1 on failure. The origin is recorded as cli.

mokosuitebackup:profiles

List all backup profiles (use this to find a profile ID).

php cli/joomla.php mokosuitebackup:profiles

Output columns: ID, Title, Type, Published.

mokosuitebackup:list

List backup records, newest first.

php cli/joomla.php mokosuitebackup:list --status=complete --limit=10
OptionShortDefaultDescription
--limit-l20Max records to show
--status-s(all)Filter: complete, fail, running

Output columns: ID, Profile, Status, Type, Size, Origin, Started.

mokosuitebackup:restore

Restore a completed backup by record ID. This overwrites the current site, so it prompts for confirmation.

php cli/joomla.php mokosuitebackup:restore 42
OptionDescription
--files-onlyRestore files only (skip the database)
--db-onlyRestore the database only (skip files)
--no-preserve-configRestore the archived configuration.php instead of keeping the current one
--password / -pDecryption password for encrypted archives

The record must be marked complete and the archive must still exist on disk.

mokosuitebackup:cleanup

Prune old backup records and archive files by age and/or count.

php cli/joomla.php mokosuitebackup:cleanup --max-age=14 --max-count=5
php cli/joomla.php mokosuitebackup:cleanup --dry-run
OptionDefaultDescription
--max-age30Delete backups older than N days
--max-count10Keep only the N newest backups
--dry-runfalseShow what would be deleted without deleting

mokosuitebackup:snapshot

Create, restore, list, or delete content snapshots (articles, categories, modules) — a lightweight alternative to a full backup for content-only rollbacks.

php cli/joomla.php mokosuitebackup:snapshot create --types=articles,categories,modules --description="Before edit"
php cli/joomla.php mokosuitebackup:snapshot list
php cli/joomla.php mokosuitebackup:snapshot restore --id=5 --mode=replace
php cli/joomla.php mokosuitebackup:snapshot delete --id=5

Cron Integration

# Daily full backup at 2 AM
0 2 * * * cd /var/www/html && /usr/bin/php cli/joomla.php mokosuitebackup:run -p 1

# Weekly cleanup on Sundays
0 3 * * 0 cd /var/www/html && /usr/bin/php cli/joomla.php mokosuitebackup:cleanup --max-age=30 --max-count=10
Last Updated: August 23, 2026
Hits: 7

MokoSuiteBackup Dashboard

Details
Category: MokoSuiteBackup
  • Applicable Software: MokoSuiteBackup
  • Min Version Number: 02.64.00
  • Max Version Number: Not Applicable

The Dashboard is your MokoSuiteBackup home base: clickable status cards for your last backup, next scheduled run, total count and storage used, plus one-click Backup Now, live system-health checks, and timely reminders like the post-update tuning banner.

Dashboard Overview

The Dashboard is the default landing page when you open MokoSuiteBackup in the Joomla administrator. It gives you a real-time overview of your backup status, system health, and quick access to common actions.

Status Cards

Four clickable cards appear at the top of the dashboard:

CardShowsLinks To
Last BackupDate, profile name, and file size of your most recent completed backupBackup detail view
Next ScheduledDate/time and task name of the next scheduled backupJoomla Scheduled Tasks
Total BackupsTotal count of all completed backup recordsBackup Records list
Storage UsedTotal disk space used by all backup archives, plus a failure count badge for the last 7 daysBackup Records list

Tuning Reminder

After an install or update of MokoSuiteBackup, the dashboard shows a dismissible reminder that the execution tuning wizard still needs to run. While tuning is pending, interactive (UI) backups are blocked until you run the wizard (automated backups keep running). Dismissing the reminder hides it for the session but does not clear the pending state — run Options > Execution Tuning > Run tuning wizard to unblock manual backups.

Quick Actions

The Quick Actions panel provides:

  • Backup Now — Select a profile from the dropdown and click to start an immediate backup. The full-screen backup screen shows a real-time progress bar, and on completion offers a View backup record button. While the execution tuning wizard is pending, this button is disabled and a link to the tuning wizard is shown in its place; running the wizard re-enables it. (Automated backups are unaffected.)
  • Navigation links — Direct access to Backup Records, Backup Profiles, Content Snapshots, Scheduled Tasks, and Update Sites.

The profile dropdown’s options are legible when the Atum administrator template is in dark mode.

System Health

The System Health panel runs automated checks and displays pass/fail status for:

  • PHP Version — Must be 8.3 or higher (required for Joomla 6.x)
  • ZipArchive — Required PHP extension for ZIP archives
  • AES-256 Encryption — Requires libzip 1.2.0+ for encrypted archives
  • Backup Directory — Checks the configured directory exists and is writable
  • Free Disk Space — Warns if less than 1 GB free

Default Directory Warning

If any published profile stores backups in the default directory inside the web root (administrator/components/com_mokosuitebackup/backups), a warning banner is displayed. For better security, configure a backup directory outside the web root. (The out-of-box default now sits one level above the web root, so archives are not web-accessible.)

Last Updated: August 23, 2026
Hits: 8

MokoSuiteBackup Execution Tuning

Details
Category: MokoSuiteBackup
  • Applicable Software: MokoSuiteBackup
  • Min Version Number: 02.64.00
  • Max Version Number: Not Applicable

Every host paces a backup differently, so MokoSuiteBackup ships a tuning wizard that probes your server — PHP limits, disk speed, site footprint — and sets the host-wide step values for you. It's required after a fresh install: until you run it, both interactive backups and pre-action (before update/install/uninstall) backups stay gated, while automated backups and updates themselves keep running.

Overview

Every host is different — PHP time limits, memory ceilings, disk speed and site size all affect how a stepped backup should be paced. Execution Tuning is a set of host-wide component options that control how MokoSuiteBackup breaks a backup into steps, plus a Run tuning wizard that probes the host and fills those values in for you. Get tuning right and large sites back up reliably on shared hosting without timing out; leave it wrong and a backup can stall or die mid-step.

These are host-wide component options, not per-profile or per-destination settings — they apply to every profile and every destination on the site, and both backup engines consume them. Find them under Components > MokoSuiteBackup > Options > Execution Tuning.

The Tuning Values

OptionControlsOut-of-box default
Files per stepHow many files are packed into the archive in a single AJAX step before the engine returns and continues on the next request100
Seconds per stepThe wall-clock budget for one step — the engine stops the current step and yields once this many seconds have elapsed, keeping each request comfortably under the host's execution limit10
Upload chunk size (bytes)The size of each chunk streamed to remote destinations (resumable/multipart uploads)2 MB (2097152)
“Inside” wrapping viableWhether wrapping the restore script inside the archive (the sidecar-free delivery mode) is fast enough on this host to be recommendedYes/No, set by the wizard

A value of 0 for any numeric field means engine auto — the backup engine picks a value at run time rather than using a fixed number. The conservative out-of-box defaults (100 files/step, 10 seconds/step, 2 MB chunk) are deliberately safe for the lowest-common-denominator shared host until the wizard measures the real one.

The Tuning Wizard

The Run tuning wizard button sits on the Execution Tuning options screen. When you run it, it probes the actual host and the site's file footprint, then writes the measured values back into the tuning options. It measures:

  • max_execution_time — the host's configured PHP time limit.
  • Whether set_time_limit(0) sticks — some hosts silently ignore attempts to lift the time limit; the wizard checks whether it actually takes effect, which determines how aggressive the per-step budget can be.
  • memory_limit — the PHP memory ceiling.
  • A disk I/O benchmark — a short read/write test to gauge how fast the filesystem is.
  • The site's file footprint — via a FileScanner pass, how many files and how much data a full backup would have to process.

From those measurements it fills Files per step, Seconds per step, Upload chunk size, and decides whether “Inside” wrapping is viable on this host. Because the values are host-wide, you only need to run the wizard once per site (and again after a hosting change).

The wizard's suggestions are not saved until you Save. When the probe finishes, the values are filled into the fields client-side and the result box appears as an orange warning reading “Not saved yet — click Save (or Save & Close) to apply these tuning values.” Saving persists the values and clears the pending flag; navigating away without saving discards them.

A Reset tuning wizard button sits next to Run tuning wizard. It re-arms the wizard on demand — resetting the tuning values to their defaults and re-setting the pending flag — without reinstalling the component, so the gate and post-install behaviour can be re-tested against a fresh state.

The Wizard Is Required After a Fresh Install

On a fresh install of MokoSuiteBackup, a flag is set marking the tuning as pending. (Because the wizard measures host capabilities, which an extension update does not change, it is not re-armed on every update — a never-tuned site stays gated across updates until the wizard is actually run, and a genuine host change is handled by the Reset tuning wizard button.) Until you run the wizard and clear that flag:

  • Interactive (UI) backups are blocked. The run-backup screen shows a modal telling you to run the tuning wizard first, the Dashboard shows a reminder that links to the wizard, and the Backup Now button is disabled.
  • Pre-action backups do not run at all. Pre-update, pre-install, and pre-uninstall backups are gated too — while the flag is set, no safety backup is taken before an update, install, or uninstall. Each time one is skipped, MokoSuiteBackup raises an admin warning and writes a matching entry to the mokosuitebackup log stating the action continued without a backup, so it is never silent. The “skip pre-update / pre-install” opt-out checkboxes are hidden while the flag is set, since there is nothing left to opt out of.
  • Unattended backups keep running. Scheduled tasks, web-cron, CLI, and API-triggered backups are not blocked — they continue on the current (or conservative default) values, so your unattended protection is never interrupted.
  • Updates are never blocked. The pending-tuning flag gates backups, not updates — you can still install and update extensions and Joomla core.

While the wizard is pending, updates and installs proceed with no pre-action backup. This is a deliberate, accepted trade-off: rather than back a site up on unverified host limits, MokoSuiteBackup takes no backup and says so loudly (admin warning + mokosuitebackup log entry). If you are about to update or uninstall something important, run the wizard first.

Running the wizard clears the flag, which unblocks interactive backups, restores pre-action backups, and dismisses the reminder.

Managed-Site Reporting

The pending state is surfaced to fleet management. The backup heartbeat reports a tuning_pending status, and MokoSuiteHQ flags any managed site whose tuning wizard has not yet run — so an administrator managing a fleet can see at a glance which sites still need tuning.

Recommended Workflow

  1. Install MokoSuiteBackup.
  2. Open Components > MokoSuiteBackup > Options > Execution Tuning.
  3. Click Run tuning wizard and let it probe the host.
  4. Review the values it filled in (adjust manually if you have a reason to), then Save — the orange “Not saved yet” notice will clear once you do.
  5. Interactive and pre-action backups are now unblocked — run a manual backup to confirm.

Documentation

Full documentation is on the MokoSuiteBackup Wiki.

Last Updated: August 23, 2026
Hits: 2
  1. MokoSuiteBackup Installation & Setup
  2. MokoSuiteBackup Notifications
  3. MokoSuiteBackup Placeholders
  4. MokoSuiteBackup Plugins & Automation

Support

  • Help
  • Glossary
  • Tickets
  • EcoSystem Status

🛎️ Prefer white‑glove setup?

Moko Consulting can provision the line, port your number, tune policies, and hand you a zero‑drama system with a one‑page runbook.
Find out More Here or Contact us to find out more!
📝 Open Support Ticket ☎️ Call ‪(931) 279-6313
MokoWaaS 27 MokoGIT 24 Onboarding 16 MCP 12 CMS 9 MokoOnyx 8 Marketing 5 Web-Design 4
  • Terms of Service
  • Privacy Policy
  • Privacy Information Request
Copyright © 2026 Moko Consulting. All Rights Reserved.
Powered by MokoSuite