SV BACKUP Changelog

Full release history for the WHM/cPanel backup plugin.

Back to Product Page View Pricing

SV BACKUP v2.4.154

Published 04 Jul 2026 14:50

Current Release
  • FIX: PLUGIN_VERSION now reads from VERSION file. Archive reuse no longer gated by requiresUpload. Orphaned cpmove archives from crashed pkgacct detected and reused.

SV BACKUP v2.4.153

Published 04 Jul 2026 08:13

  • FIX: Removed requiresUpload gate from archive reuse check. Existing cpmove archives are now reused regardless of destination type. Searches both BACKUP_STAGING_DIR and configured local dir. This prevents 50GB archives from being overwritten by retries when the destination lookup has a transient issue.

SV BACKUP v2.4.152

Published 04 Jul 2026 06:49

  • Extend archive reuse: detect orphaned cpmove-{account}.tar.gz (non-timestamped) from crashed pkgacct and skip re-creation on retry. Added pkgacct-running check to avoid reusing still-growing archives. Retry a stuck full backup via the UI and it will detect the existing 50GB file and go straight to upload.

SV BACKUP v2.4.151

Published 26 Jun 2026 16:52

  • Fix ionCube self-heal infinite loop: add 5-min cooldown, detect loader already in place

SV BACKUP v2.4.150

Published 26 Jun 2026 12:28

  • Fix grouped view crash: handle null seed in sort (chains with children but no seed)

SV BACKUP v2.4.149

Published 26 Jun 2026 12:19

  • Grouped view resilience: try/catch with auto-fallback, diagnostic empty-state messages

SV BACKUP v2.4.148

Published 26 Jun 2026 11:50

  • Fix SQLite too many variables error when grouping 1000+ chain jobs — batch queries into 900-row chunks

SV BACKUP v2.4.147

Published 26 Jun 2026 11:40

  • Permanent ionCube fix: runtime self-heal on every page load instead of waiting for daily cron

SV BACKUP v2.4.146

Published 22 Jun 2026 19:16

  • Fix grouped view: API was capping at 100 jobs, bypass limit when grouped=1 to fetch all chain data

SV BACKUP v2.4.145

Published 22 Jun 2026 19:10

  • Fix grouped view: relax chain filter to show chains with seed OR children, handle missing seed gracefully

SV BACKUP v2.4.144

Published 22 Jun 2026 13:16

  • Hide download button for non-seed incremental backups (rclone dirs can't download)

SV BACKUP v2.4.143

Published 22 Jun 2026 12:08

  • Fix grouped view: add missing fileName variable in buildBackupRowCells

SV BACKUP v2.4.142

Published 22 Jun 2026 11:51

  • Filter bar balance: wider dropdowns, normal font size, natural labels

SV BACKUP v2.4.141

Published 22 Jun 2026 11:41

  • Compact filter bar: tighter spacing, shorter labels, narrower dropdowns to prevent overflow

SV BACKUP v2.4.140

Published 22 Jun 2026 11:21

  • Batch toolbar + kebab dropdown: replace per-row action buttons with clean kebab menu, add batch control toolbar (Pause/Resume/Retry All)

SV BACKUP v2.4.139

Published 22 Jun 2026 08:22

  • Fix schedule dropdown: show ALL schedules including inactive ones

SV BACKUP v2.4.138

Published 22 Jun 2026 08:09

  • Add schedule filter dropdown to Backups page: filter jobs by schedule (Daily Backup, Test, etc.)

SV BACKUP v2.4.137

Published 21 Jun 2026 18:36

  • Fix rclone incremental backup size showing 0 B: added --stats-log-level NOTICE to prevent rclone stats from being suppressed by --log-level NOTICE

SV BACKUP v2.4.136

Published 21 Jun 2026 18:04

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.135

Published 21 Jun 2026 17:48

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.134

Published 21 Jun 2026 12:28

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.133

Published 21 Jun 2026 12:01

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.132

Published 21 Jun 2026 11:55

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.131

Published 21 Jun 2026 11:51

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.130

Published 21 Jun 2026 11:43

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.129

Published 21 Jun 2026 11:37

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.128

Published 21 Jun 2026 11:27

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.127

Published 21 Jun 2026 11:14

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.126

Published 21 Jun 2026 09:36

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.125

Published 20 Jun 2026 23:47

  • v2.4.125: CRITICAL FIX - retention was keeping 3 jobs TOTAL instead of 3 per account. The v2.4.122 query had a logic error: 'WHERE (schedule_id=? OR ((schedule_id IS NULL OR schedule_id=0) AND account=?))' applied account filter ONLY to the NULL-schedule branch, so 'schedule_id=?' matched ALL accounts. When a 4th account completed, the 1st account's job was deleted. Fixed to: 'WHERE account=? AND status=? AND (schedule_id=? OR schedule_id IS NULL OR schedule_id=0)' so account filter applies to ALL rows. Deploy immediately to all servers.

SV BACKUP v2.4.124

Published 20 Jun 2026 23:17

  • v2.4.124: Fixed bulk delete having no 'remove from list' fallback when remote files are unreachable. Single delete got this in v2.4.123
  • bulk delete was still broken. Now bulk delete auto-retries with skipRemoteDelete=true for any job whose remote file is inaccessible (changed bucket, missing destination, etc.), and reports how many were removed from list only. Includes v2.4.123 single-delete fallback fix and v2.4.122 retention query fix.

SV BACKUP v2.4.123

Published 20 Jun 2026 23:10

  • v2.4.123: Fixed deletion blocked when remote destination is unavailable (bucket renamed, destination deleted, etc). Previously the 'remove from database only' fallback prompt only appeared when the error message contained 'Remote delete failed' — but other failures like missing destinations or unresolvable remote paths produced different errors and blocked the user entirely. Now ANY remote deletion failure triggers the fallback prompt offering to remove from DB only. Also fixed deleteRemoteFile() to always throw when it cannot clean up, so the UI handler can offer the fallback consistently.

SV BACKUP v2.4.122

Published 20 Jun 2026 22:34

  • v2.4.122: Rewrote retention query to avoid COALESCE() which ionCube --obfuscate locals may strip from encoded output. Changed COALESCE(schedule_id,0)=0 to (schedule_id IS NULL OR schedule_id=0). Also removed COALESCE from ORDER BY in retention units query. This ensures retention can find and prune jobs that were created before schedule_id was properly populated, preventing remote B2 files from being orphaned indefinitely. Includes v2.4.121 installer fix, v2.4.120 timeout increase, v2.4.119 runtime dir resilience.

SV BACKUP v2.4.121

Published 20 Jun 2026 22:04

  • v2.4.121: Fixed in-app update failure (3rd attempt - actual root cause). The install.sh 'loader_so_path' command substitution returns empty under the PHP exec() Updater environment, and set -e was killing the script with exit 255. Added || true guard so the loader backup step is non-fatal. Also includes v2.4.120 timeout increase, v2.4.119 runtime dir resilience, and v2.4.118 retention orphan fix.

SV BACKUP v2.4.120

Published 20 Jun 2026 21:57

  • v2.4.120: Fixed in-app update timeout causing silent installer failure. Root cause: Updater::applyUpdate() set set_time_limit(300) but install.sh data backup step copies entire data/ directory (often 500MB+) which can exceed 5 minutes on rotational disks. PHP killed the installer process (exit 255), producing the misleading error 'Update installer failed' with only the early installer output captured. Fix: increased timeout to 600s (10 min). Also includes v2.4.119 install.sh resilience fix and v2.4.118 retention orphan fix.

SV BACKUP v2.4.119

Published 20 Jun 2026 21:53

  • v2.4.119: Fixed in-app update failure where install.sh exits silently after ionCube check. Root cause: select_versioned_source_dirs() in install.sh would hard-fail when the PHP-side Updater::selectRuntimeDirs() had already rearranged the source directories (moving includes-php84 to includes). A leftover variant directory could trigger a fatal error. Fix: if the matching variant is already gone but the canonical directory exists, skip gracefully instead of treating it as a package defect. Also includes v2.4.118 retention orphan fix (schedule_id fallback) and v2.4.117 ioncube_health.sh cron preservation.

SV BACKUP v2.4.118

Published 20 Jun 2026 21:39

  • v2.4.118: Fixed retention not pruning remote backup files. Root cause: buildScheduledRetentionUnits() filtered jobs by schedule_id, but older jobs created before schedule_id was properly populated had NULL/0 schedule_id — making them invisible to retention. Those jobs accumulated in DB indefinitely and their remote B2 files were never deleted. Fix: retention query now also matches jobs with COALESCE(schedule_id,0)=0 for the same account, so retention can find and prune all completed jobs regardless of when they were created. Also backfilled schedule_id on affected servers.

SV BACKUP v2.4.117

Published 20 Jun 2026 20:25

  • v2.4.117: Fixed updateCrontab() missing ioncube_health.sh cron entry. ScheduleManager::updateCrontab() was overwriting the crontab with only 3 of 4 entries (missing the ionCube Loader health check), so any schedule creation/update/deletion/toggle silently removed the daily ionCube health cron. Added the missing ioncube_health.sh line at auto_update_time + 15 minutes, matching install.sh.

SV BACKUP v2.4.116

Published 13 Jun 2026 17:42

  • v2.4.116: Fixed incremental backup 0 B display (show 0 B not dash). Optimized rclone incremental sync with find -newermt pre-scan + --files-from (dramatic speedup for scans). Permanent ionCube Loader health cron with php.ini fallback for servers without php.d/. Jupiter template uses index.php instead of wrapper.cgi to fix WHM session errors. Daily download_cache cleanup. install.sh now backups ioncube .so even when loader already active.

SV BACKUP v2.4.115

Published 13 Jun 2026 07:36

  • v2.4.115: Daily download_cache cleanup in temp_cleanup cron (prevents 15GB+ stale restore files). PLUGIN_VERSION sync. ionCube health check + loader backup. Jupiter template wrapper.cgi fix. prune-based find optimization. Restart marker resilience.

SV BACKUP v2.4.114

Published 13 Jun 2026 05:47

  • ionCube Loader persistence fix + health cron

SV BACKUP v2.4.113

Published 11 Jun 2026 19:55

  • Fix WHM session/400 error: Jupiter template breadcrumb URL changed from wrapper.cgi to index.php. The wrapper.cgi route was causing repeated cPanel session/login rotations and intermittent 401 API calls.

SV BACKUP v2.4.112

Published 11 Jun 2026 16:59

  • Fix ionCube Loader restart resilience: scheduleWhmRestart() now falls back to systemctl/service if /scripts/restartsrv_cpsrvd is missing
  • config.php extends restart window to 180s and shows a softer fallback message when restart marker expires. Also includes BackupManager -prune optimization and RcloneEngine --files-from fix.

SV BACKUP v2.4.106

Published 10 Jun 2026 19:49

  • Rclone incremental: pre-scan with find before rclone sync to skip full tree scan when no files changed. Turns 2-5hr no-change backups into sub-second metadata-only updates.

SV BACKUP v2.4.105

Published 10 Jun 2026 19:20

  • Critical fix: scheduleWhmRestart now uses nohup for reliability and writes restart marker
  • config.php shows retry message during restart window instead of fatal ionCube error

SV BACKUP v2.4.104

Published 09 Jun 2026 22:56

  • Fixed column alignment: expand arrow now inside checkbox cell

SV BACKUP v2.4.103

Published 09 Jun 2026 22:33

  • Replaced chain page with grouped inline table: Group button toggles expandable full-backup rows with nested incrementals (Inc #1, Inc #2...) showing only completed tasks

SV BACKUP v2.4.102

Published 09 Jun 2026 21:54

  • Clearer backup count: seed label for single-backup chains, awaiting 1st inc for zero-increment chains

SV BACKUP v2.4.101

Published 09 Jun 2026 21:42

  • Chain view UI cleanup: active/completed badges, sorted, auto-expand active

SV BACKUP v2.4.100

Published 09 Jun 2026 21:34

  • Fix syntax error from orphaned await outside function

SV BACKUP v2.4.99

Published 09 Jun 2026 21:31

  • Fix: add timeAgo and formatBytes local fallbacks in chain view

SV BACKUP v2.4.98

Published 09 Jun 2026 21:26

  • Debug logging for chain view

SV BACKUP v2.4.97

Published 09 Jun 2026 20:56

  • install.sh now copies encoded runtime folders (includes-php81 etc.) instead of plain includes/

SV BACKUP v2.4.96

Published 09 Jun 2026 20:49

  • Hotfix: chain view card selector was querySelector(.card:not(#backup-chain-view)) which grabbed the first stat card instead of the table card, causing a blank display. Fixed by adding id=backup-table-card to the table container and selecting by ID. Empty state now explains how to create an incremental schedule.

SV BACKUP v2.4.95

Published 09 Jun 2026 20:32

  • Hotfix: chain view toggle called undefined stopProgressPolling() causing ReferenceError that prevented loadBackupChains() from ever running. Replaced with direct clearInterval on progressInterval and elapsedTimerInterval.

SV BACKUP v2.4.94

Published 09 Jun 2026 20:27

  • Hotfix: chain_summary and retention_preview API cases were accidentally placed inside the POST handler switch instead of the GET handler, so GET requests returned Unknown action. Moved both cases into the GET switch section.

SV BACKUP v2.4.93

Published 09 Jun 2026 20:21

  • Hotfix: chain view and retention preview were stuck on loading because apiCall already returns parsed JSON but the callers redundantly called .json() on the result, causing a silent TypeError.

SV BACKUP v2.4.92

Published 09 Jun 2026 20:15

  • Hotfix: chain view and retention preview API calls now use the correct api=backups routing via apiCall() instead of raw fetch() with action= param, which caused infinite loading because index.php did not route to the API handler.

SV BACKUP v2.4.91

Published 09 Jun 2026 20:04

  • Chain view toggle on Backups page groups backups by incremental chain with progress bars, seed job info, total size, and retention policy. Expand any chain to see all its backup jobs inline. Schedule edit modal now shows a live retention preview for incremental schedules showing current chains and which would be pruned. New API endpoints: chain_summary and retention_preview.

SV BACKUP v2.4.90

Published 09 Jun 2026 19:26

  • - Hotfix: the v2.4.89 incremental tar command had both `-T <filelist>` and a trailing `username` argument, causing tar to still walk the entire home directory tree with --newer-mtime after reading the pre-scanned file list. This completely defeated the find pre-scan optimization. Fixed by removing the trailing path argument and using `-C /home/<username>` so relative paths from find resolve correctly. The `--exclude` flags in tar were also removed because find already pruned excluded directories
  • this eliminates any risk of tar exclude patterns accidentally matching the appended database dump filename.

SV BACKUP v2.4.89

Published 09 Jun 2026 19:12

  • - Incremental backups now write their local archive to BACKUP_STAGING_DIR (/sv_backup) instead of /home, preventing I/O contention with account data and avoiding partition-full failures on near-quota accounts. Existing chains are unaffected — chain identity lives on the remote destination, not the local filesystem.
  • - Incremental tar now pre-scans with find -newer to build a file list before archive creation, so excluded directories (node_modules, vendor, cache, etc.) are never traversed by tar. This cuts incremental archive creation time significantly on accounts with large directory trees.
  • - Incremental backup failures now schedule automatic retries via BackupRecoveryManager, matching the behavior already in place for full backups. Previously, any transient error (upload timeout, network blip) permanently failed an incremental job.
  • - Restore retries now preserve already-downloaded temp files so the next worker can reuse them instead of re-fetching gigabytes from the remote destination.
  • - Added batch_id column with indexes to backup_jobs and restore_jobs so batch-linked lookups use indexed queries instead of LIKE scans on metadata JSON.

SV BACKUP v2.4.88

Published 06 Jun 2026 23:30

  • ionCube packaging integration for WHM plugin builds.

SV BACKUP v2.4.87

Published 06 Jun 2026 06:22

  • UX Polish, Auto-Protect & Mobile Responsive.
  • - IonCube-safe deploy: Updater uses packaged install.sh for encoded updates, ensuring loader + runtime selection.
  • - Transfer Files: single-folder rsync resync auto-promoted to bulk_folder/rsync_tree for fast operation.
  • - Transfer history: resync file counts (X of Y) displayed for standard sync_newer jobs.
  • - /sv_tmp retention: automatic cleanup of old data backups and rollback dirs (keep 3 each).
  • - Transfer Files: multi-selection bulk resync promotion, transfer queue serialization, daily /sv_tmp cleanup cron.
  • - SFTP directory check: existence verified from parent entry instead of listing large target directories (fixes 128 MB memory exhaustion).
  • - Transfer Files history: sortable headers and page-size selector with session persistence.
  • - Per-file upload memory fix: streaming RecursiveDirectoryIterator replaces in-memory task arrays.
  • - Custom logo support: logo replaced in sidebar header (cp_logo.png).
  • - Dashboard: Protected/7-Day Success/Active Chains cards link to related pages; Unprotected Accounts card opens modal with full account list.
  • - Auto-protect: cron checks hourly for new WHM accounts not in any schedule, adds them to first active full backup schedule (on by default).
  • - Verification display: badges now show truncated SHA-256 hash and verified file size.
  • - Filter bar: single-row layout (nowrap) on backups page.
  • - Topbar padding: 10px top/bottom with fixed 64px height.
  • - Mobile responsive sidebar: off-canvas drawer with hamburger toggle, backdrop overlay, auto-close on nav click, body scroll lock.
  • - Incremental size display: shows dash for zero-size rclone incrementals, real size from bytes_transferred when available.
  • - Force-stop improvement: kills by account name for orphaned batch subprocesses (pkgacct/pigz/rclone/tar).
  • - Installer optimization: data backup skips download_cache/ (14GB transient cache) — upgrades drop from ~18GB to ~3.5GB.
  • - License page: Change License button with prompt dialog; Deactivate License button fix.
  • - Mobile sidebar CSS refinements: logo max-height, sidebar header min-height, toggle button alignment.

SV BACKUP v2.4.67

Published 02 Jun 2026 18:36

  • Production Hardening & Verification.
  • - Upload verification: shared verifier for full + incremental archives, local SHA-256 storage, explicit verification level/status metadata.
  • - Local verification parity: local archives verified before job completion, checksum-verified delete manifests.
  • - Verification visibility: badges in backups table showing checksum vs size-only; verification_status and verification_level filters.
  • - Snapshot safety: no more silent truncation at 500000 files; throws explicit exception when limit exceeded.
  • - Snapshot prune expression fix: rtrim character-set bug causing invalid find -prune; exclusion follow-up fix for zero-file incremental snapshots.
  • - Snapshot diff heartbeat: worker heartbeat refreshed every 100 chunks during large snapshot reads; 56% progress update during delete manifest build.
  • - Backup cancellation: two-click force-stop flow, worker_state=cancelling tracking, worker tree termination.
  • - Restore: incremental DB snapshot/restore support, temp-workspace incremental apply helper, restore preflight checklist modal.
  • - Settings API hardening: require_valid_license for privileged actions.
  • - Dashboard: verification cards (unverified, size-only) in summary; verification health alerts in Needs Attention.
  • - Health alerting: typed-alert schema with alert_type + unique (alert_type, job_id); verification health scan integrated into cron cadence.
  • - Clean-db bootstrap: migrateSchema now adds verification columns idempotently.
  • - Dead code removal: download_chunk, confirm()-to-showConfirm() migration in restore/settings/license.
  • - Shared JS formatters centralized in app.js; per-page dupes removed.
  • - Responsive: restore filter controls, modal sizing on mobile.
  • - Production hardening pass: RcloneEngine data-loss guard, CR/LF strip, SFTP path sanitization, obscurePassword via proc_open, SV_BACKUP_WORK_DIR constant.

SV BACKUP v2.4.43

Published 29 May 2026 07:57

  • Batch Stability, Concurrency & UX Improvements.
  • - Bulk Folder Upload with rsync-tree promotion for fast single-directory transfers.
  • - SQLite lock retry: Database::executeStatement() retries on transient locked/busy errors; result set finalization prevents stale locks.
  • - Maximum concurrent backups enforcement centralized; pending jobs auto-queued when slots occupied.
  • - Batch worker singleton lock (flock on batch_worker.lock) prevents duplicate workers and pkgacct storms.
  • - Orphaned background job reconciliation: detects batch worker membership, account-specific pkgacct checks, immediate collapse of older running rows.
  • - Sequential batch recovery: auto-resume pending siblings when orphaned running job reconciled; manual Resume Pending Batch action on failed rows.
  • - Batch cancel/blind fix: cancelJob now auto-resumes remaining pending batch siblings; Retry exposed on cancelled rows.
  • - Stalled batch queue fix: retryBackupJob clears stale markers and resumes pending siblings; pending rows rendered as queued not running.
  • - Backups page live-refresh: polls visible active job IDs, refreshes table on any row state change.
  • - Dashboard improvements: fullscreen loader prevents perceived hangs; LicenseChecker reuses cached server_ip with local IP fallbacks.
  • - Updater SQLite lock hotfix: INSERT OR REPLACE for settings, no non-essential cache writes in checkForUpdate.
  • - Transfer Files polling: uncached GET requests with _ts param and no-cache headers.
  • - Transfer Files: JS constant fix (TRANSFER_RUNNING_REFRESH_MS), ionCube GUI activation fix with delayed WHM restart.
  • - Restore page: formatBytes local formatter fix, clearHistory uses Database::delete with retry.
  • - Memory optimization: S3 multipart upload streaming via php://temp, snapshot manifest streaming from popen(find).
  • - Recovery snapshot summary: header-only JSON parse to avoid OOM on large manifests.
  • - Stale backup recovery routed through reconcileOrphanedBackgroundJobs for batch-worker safety.

SV BACKUP v2.4.10

Published 22 May 2026 18:56

  • Disaster Recovery & Core Hardening.
  • - Disaster Recovery Phase 1: Portal-side recovery codes, request/verify API, app-side scan/queue flow, file-based DR snapshots, sequential restore batches.
  • - Disaster Recovery Phase 2: Sidecar-based discovery (.dr.json uploaded alongside backups), reusable CLI drill runner (cron/run_disaster_recovery_drill.php) with verify/scan/queue steps, JSON drill reports, --wait-restore polling.
  • - Secure token management for DR sessions and snapshots.
  • - Schedule timezone fixes: schedules interpreted in app timezone, not UTC; cron applies plugin timezone before getDueSchedules().
  • - Retention policies (Phase 4): schedule-level daily/weekly/monthly retention, chain-unit pruning, incremental chain ranking.
  • - Chain health (Phase 5): per-point parent_job_id validation, chain_health_message/chain_restorable enrichment, restore rejection for broken chains.
  • - Operational alerting (Phase 6): backup_health_alerts, chain health scanning on 30-minute cadence, notification preferences for health/capacity alerts.
  • - SMTP notifications wired for backup/restore terminal states and capacity alerts.
  • - Configurable auto-update time (settings.auto_update_time).
  • - Batch backup email aggregation: per-account emails suppressed, batch-start + summary emails via NotificationManager.
  • - Installer improvements: /sv_tmp dedicated temp root to avoid /tmp ENOSPC on small loop mounts; portal install.sh updated with SV_BACKUP_TEMP_ROOT.
  • - WHM menu fix: plugin.conf + AppConfig use url=/cgi/addon_whm_backup/index.php with target=_blank.
  • - IonCube update fix: Updater now rejects encoded packages when loader is missing, delegates to packaged install.sh for safe runtime selection.
  • - Plain-source bridge release (2.3.56) for ionCube regression recovery.
  • - Firewall whitelist: POST-based whitelist API, installer-time CSF/Imunify360/firewalld/cPHulk whitelisting.

SV BACKUP v2.3.28

Published 25 Mar 2026 14:49

  • Transfer Files & Schedule Improvements.
  • - Transfer Files: Remote SFTP browse, root resolution with ssh-keyscan key bootstrapping, OpenSSH sftp fallback for legacy curl/libssh2 servers.
  • - Hetzner Storage Box support: trailing newline stripping in destination config, StrictHostKeyChecking=accept-new fallback for older SSH clients.
  • - Schedule execution: selected-account schedules now route through batch queue, sorted by account size with proper unit parsing (G/T/M).
  • - Backup deletion: distinguishes remote cleanup failures from list removal; confirmation-required response when remote delete fails but object is inaccessible.
  • - WHM menu: target=_blank support for opening SV Backup in new tab via Jupiter nav patch.
  • - Backup cron: improved retry dispatch, no early exit when no schedules are due (still processes queued jobs).

SV BACKUP v2.3.18

Published 22 Feb 2026 15:53

  • Initial release of SV Backup for WHM/cPanel.
  • - Core backup engine: full backups via pkgacct, incremental via tar --newer-mtime, rsync-over-SSH, and file/database/email backup types.
  • - Multi-destination support: Local, S3/B2, FTP/FTPS, SFTP, and Rsync-over-SSH.
  • - WHM plugin integration with Jupiter theme sidebar navigation.
  • - License management with portal-based activation/verification/deactivation.
  • - Schedule management with cron-based execution, timezone-aware scheduling, live App/Server/UTC clocks.
  • - Backup list with status cards, filter bar, sortable columns, bulk selection, and live polling for running jobs.
  • - Restore page with point-in-time selection, preflight checklist, and restore history.
  • - Transfer Files with two-pane browser (local/remote), upload/download, and sync.
  • - Settings page with notifications, SMTP, compression, and concurrency controls.
  • - Activity log and basic dashboard with backup/restore stats.
  • - IonCube encoding with multi-PHP (8.1/8.2/8.3/8.4) runtime selection.
  • - Portal-based auto-update with rollback support.
  • - Database schema with automatic migration on upgrade.
  • - SQLite WAL mode for concurrent read/write.
  • - Firewall whitelist integration (CSF, Imunify360, firewalld, cPHulk).
  • - Account picker with "Select All" support (all=1 pagination fix).
  • - Rsync destination validation via dry-run handshake + SFTP fallback.
  • - FTP/FTPS transfer improvements: STAT fallback for directory listings, plain-FTP retry, certificate negotiation handling.
  • - SFTP verification fallback from HEAD probe to directory listing.
  • - cPanel backup staging directory (/sv_backup) with proper permissions.