diff --git a/Home.md b/Home.md index 4368d70..29582f1 100644 --- a/Home.md +++ b/Home.md @@ -18,14 +18,15 @@ Full-site backup and restore for Joomla — database, files, and configuration. - [Installation](guides/Installation) — Download, install, and configure - [Configuration](guides/Configuration) — Component settings, profiles, dashboard - [Backup Profiles](guides/Backup-Profiles) — Create and manage backup profiles -- [Scheduled Tasks](guides/Scheduled-Tasks) — Automate backups with Joomla scheduler -- [CLI Usage](guides/CLI-Usage) — Command-line backup and management +- [Content Snapshots](guides/Content-Snapshots) — Lightweight article/module snapshots and restore +- [Scheduled Tasks](guides/Scheduled-Tasks) — Automate backups and snapshots with Joomla scheduler +- [CLI Usage](guides/CLI-Usage) — Command-line backup, snapshot, and restore - [Akeeba Migration](guides/Akeeba-Migration) — Migrate from Akeeba Backup Pro ## Reference -- [REST API](reference/REST-API) — Remote backup management endpoints -- [Remote Storage](reference/Remote-Storage) — FTP, S3, Google Drive upload +- [REST API](reference/REST-API) — Backup and snapshot API endpoints +- [Remote Storage](reference/Remote-Storage) — SFTP, S3, Google Drive upload - [Encryption](reference/Encryption) — AES-256 archive encryption - [Differential Backups](reference/Differential-Backups) — Incremental backup strategy - [Troubleshooting](guides/Troubleshooting) — Common issues and solutions @@ -38,6 +39,16 @@ Full-site backup and restore for Joomla — database, files, and configuration. - Full site (database + files + configuration) - Database-only and files-only modes - Differential — only files changed since last full backup +- Pre-flight validation — checks directory, disk space, extensions, credentials before starting +- Auto-verify integrity after creation + +### Content Snapshots +- Lightweight JSON snapshots of articles, categories, and modules +- Includes tags, custom fields, workflow associations +- Restore modes: Replace (clean slate) or Merge (upsert) +- Selective article restore — browse and pick individual articles +- Automatic retention (max count + max age) +- Scheduled snapshot task via com_scheduler ### Archive Formats - ZIP with optional AES-256 encryption @@ -45,41 +56,51 @@ Full-site backup and restore for Joomla — database, files, and configuration. - Configurable naming with date/host/profile placeholders ### Scheduling & Automation -- Joomla Scheduled Tasks integration -- Web cron endpoint for shared hosting +- Joomla Scheduled Tasks integration (backups + snapshots) +- Web cron endpoint for shared hosting (random secret, IP whitelist) - Pre-action backups — auto-backup before extension update or uninstall -- CLI: `php cli/joomla.php mokosuitebackup:run --profile=1` +- CLI: `mokosuitebackup:run`, `mokosuitebackup:snapshot`, `mokosuitebackup:restore` ### Remote Storage -- FTP / FTPS with passive mode +- SFTP (SSH File Transfer) with key file authentication — key stored base64-encoded in database - Amazon S3 (and S3-compatible: DigitalOcean Spaces, Wasabi, MinIO) - Google Drive with OAuth2 and resumable uploads +- Graceful degradation — local backup preserved if upload fails ### Notifications - Email on success and/or failure per profile - ntfy push notifications — instant alerts to phone or desktop -- Per-profile topic, server, and access token configuration +- Notifications for restore operations (site restore, snapshot create/restore) + +### Dashboard +- Last backup status, next scheduled, total count, storage used +- Snapshot widget — latest snapshot info, type badges, item counts +- Backup trend chart — CSS bar chart showing 30-day backup sizes +- Storage breakdown — per-profile disk usage +- System health checks ### Security -- Granular ACL permissions — separate run, download, and restore +- Granular ACL permissions — separate run, download, restore, snapshot manage - Configuration sanitization — credentials stripped from backups +- SSH key stored base64-encoded in database, never exposed in UI +- Webcron secret hardening — strength meter, rejects weak patterns - MokoRestore security gate — filesystem verification before restore -- Abstract DB prefix for cross-server portability +- Path traversal protection on all archive extraction ### Restore - In-admin restore with file and database options +- AJAX stepped restore — prevents timeout on shared hosting +- CLI restore with --files-only, --db-only, --password options - MokoRestore standalone wizard — works without Joomla installed -- Configuration rebuild from backup template + fresh credentials -- Admin password reset and client provisioning +- Backup comparison — select two backups for side-by-side diff +- Archive browser — view files inside a backup without extracting ### Per-Profile Management - Unlimited profiles with independent settings - Per-profile retention (days + count) - Per-profile exclusions and notifications ---- - -## REST API +### REST API | Endpoint | Description | |---|---| @@ -88,6 +109,11 @@ Full-site backup and restore for Joomla — database, files, and configuration. | `GET /api/v1/mokosuitebackup/backup/:id/download` | Download archive | | `DELETE /api/v1/mokosuitebackup/backup/:id` | Delete backup record | | `GET /api/v1/mokosuitebackup/profiles` | List backup profiles | +| `GET /api/v1/mokosuitebackup/snapshots` | List snapshots | +| `POST /api/v1/mokosuitebackup/snapshot` | Create snapshot | +| `POST /api/v1/mokosuitebackup/snapshot/:id/restore` | Restore snapshot | +| `DELETE /api/v1/mokosuitebackup/snapshot/:id` | Delete snapshot | +| `GET /api/v1/mokosuitebackup/snapshot/:id/download` | Download snapshot JSON | --- @@ -96,7 +122,7 @@ Full-site backup and restore for Joomla — database, files, and configuration. 1. Download from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuiteBackup/releases) 2. Install via Extensions > Install 3. Components > MokoSuiteBackup > Backup Now -4. Configure notifications in profile settings +4. Configure notifications and remote storage in profile settings ---