Releases: DisembarkHost/disembark-cli
Releases · DisembarkHost/disembark-cli
v.2.7.0
v2.7.0 - January 28th, 2026
Added
- Cookies Argument: Added support for a
--cookiesargument to pass custom cookies with API requests. - User Agent: Added a custom User-Agent header to all outgoing requests for better server compatibility and logging.
- Manifest Fetch Fallback: Implemented a fallback mechanism for manifest fetching to improve reliability when the primary method fails.
Improved
- Info Command: Enhanced the
infocommand output with additional details. - Debug Argument: Improved the
--debugargument functionality for better troubleshooting. - Composer Update: Updated project dependencies via Composer.
v2.6.0
v2.6.0 - November 25th, 2025
Added
- New
infoCommand: Addeddisembark info <site-url>to display connection status, storage usage, last scan timestamp, and database statistics (tables/rows). - New
removeCommand: Addeddisembark remove <site-url>to delete a site's credentials from the local configuration file. - Parallel File Synchronization: The
syncprocess has been completely re-architected to use a concurrent state machine. It now processes multiple chunks simultaneously across three states: Zipping (server-side), Downloading, and Unzipping. - Background Extraction: Zip extraction is now offloaded to a detached background process (using
php -r), allowing the CLI to continue downloading the next chunk without waiting for file IO operations to complete. - Multi-threaded Large File Downloads: Added
download_files_parallel, allowing large files to be downloaded concurrently with visual progress bars for each active transfer. - Global Progress Footer: Introduced a "Global Footer" in the CLI UI that stays pinned to the bottom of the output, showing the total bytes processed versus total bytes expected across all concurrent threads.
- New
--large-file-thresholdFlag: Added a configurable threshold (default 10MB) to determine which files are downloaded individually vs. zipped in batches. - New
--cleanupFlag: Added to theinfocommand to force a purge of temporary files on the remote server.
v2.5.0
v2.5.0 - November 21st, 2025
Added
- Sync Exclusions: The
synccommand now supports the-xargument, allowing you to exclude specific files or directories from being synchronized (e.g.,disembark sync <url> -x wp-content/cache). - Sync Checksum Skipping: Added a
--skip-checksumsflag to thesynccommand. When used, the CLI compares files based on size only, skipping the MD5 checksum calculation to improve performance on large sites. - Stateless Backups: The
backupcommand now accepts a--token=<token>argument. This allows you to run a backup without establishing a persistent connection (disembark connect) or having a local configuration file.
Improved
- Parallel Sync Processing: The "subsequent sync" process now downloads remote manifest chunks in parallel batches. This significantly reduces the time required to analyze differences on sites with large file counts.
- Timeout Handling: Increased the timeout limit for the
zip-sync-filesendpoint to 30 minutes to prevent timeouts when processing batches of many small files. - Sync Exclusion Logic: Local filtering has been implemented for "initial syncs," ensuring that files excluded via
-xare not downloaded even during the first run.
v2.4.0
v2.4.0 - November 10th, 2025
Added
- New
ncduCommand: Added adisembark ncdu <site-url>command to interactively browse the remote site's file system and disk usage. This command requires the localncdu(NCurses Disk Usage) tool to be installed. It can generate a new file manifest on the fly or reuse an existing session manifest (--session-id). - Partial Backup & Sync: Added
--skip-dband--skip-filesoptions to both thebackupandsynccommands to allow for file-only or database-only operations. - Database Batching Controls: Added
--db-max-sizeand--db-max-rowsarguments to thebackupandsynccommands. These allow for customizing the database batching thresholds for theprocessDatabaseBackupfunction. - Sync Chunking Controls: Added
--file-chunk-sizeand--file-chunk-max-sizearguments to thesynccommand to provide control over the file chunking logic. - Client-side Backup Filtering: The
backupcommand now supports applying local-xexclusion flags when reusing a--session-id. The CLI downloads the full manifest, filters the file list locally, and then re-chunks and downloads only the required files using the sync-file zip endpoint.
Improved
- Initial Sync Reliability: The "initial sync" process (syncing to a new folder) is now more robust. If a pre-generated file chunk (
.zip) fails to download or extract, the tool automatically falls back to downloading that chunk's JSON manifest and streaming each file individually. - Subsequent Sync Chunking: The file chunking logic for "subsequent sync" operations has been significantly improved. Instead of chunking only by file count, it now intelligently builds chunks based on both file count (
--file-chunk-size) and total file size (--file-chunk-max-size). It can also correctly handle single files that are larger than the maximum chunk size. - Help Text: Updated the
disembark --helpoutput to include the newncducommand and all new arguments for thebackupandsynccommands.
v2.3.0
v2.3.0 - October 28th, 2025
Improved
- Database Download Strategy: Reversed the database download logic to attempt a fast, direct download first. If the direct download fails (e.g., due to hosting restrictions), it now automatically falls back to using the PHP streaming API. This logic is consolidated in a new
download_db_filefunction and replaces the v2.2.0 "stream-first" approach. - Database Backup Efficiency: Refactored the database backup logic for both the
backupandsynccommands into a new, centralizedprocessDatabaseBackupfunction. - Hybrid Batching: The new
processDatabaseBackupfunction introduces a "hybrid batching" strategy, which groups numerous small tables into batches to be exported together while processing very large tables individually in parts. This improves reliability for complex databases. - Sync Reliability: The
synccommand's file download step for subsequent syncs is now more robust. It processes new or changed files in chunks (of 2,500 files) and includes a retry mechanism to handle intermittent network or server errors during the download and extraction of a chunk. - Help Command: Reorganized the help output (
disembarkordisembark --help) for better readability, groupingbackupandsyncas "Primary Commands".
Changed
- Removed Backup Confirmation: Removed the "Do you want to proceed? (yes/no)" prompt from the
backupcommand to allow for non-interactive scripting and automation.
v2.2.0
v2.2.0 - October 26th, 2025
Added
- New
syncCommand: A newdisembark sync <site-url> [<folder>]command has been added to create and update a local mirror of a remote site.- On the first run, it performs an "initial sync" to download all database tables and file chunks.
- On subsequent runs, it intelligently compares a local manifest with the remote one, downloading only new or changed files and removing deleted ones.
- The
synccommand supports--debugfor saving manifest files and--session-idto reuse a manifest from the web UI.
- Session Reuse for
backup: Thebackupcommand now supports a--session-id=<id>argument. This allows you to reuse an existing backup session from the plugin's web UI, skipping the analysis step and downloading files from the pre-generated manifest.
Improved
- Hosting Download Compatibility: The method for downloading database (
.sql) files has been re-architected. This change specifically supports restrictive hosting environments (like Flywheel) that block direct URL access to.sqlfiles.- The tool now attempts to download database files using a new
download_file_via_streamfunction, which calls a/wp-json/disembark/v1/stream-fileAPI endpoint to stream the file content via PHP. - If this streaming method fails, it automatically falls back to the original direct download method.
- The tool now attempts to download database files using a new
- Removed
curlDependency: Thedownload_file_directfunction (used for file chunks and as a fallback) was rewritten to use the internalrmccue/requestsPHP library. This removes the dependency on thecurlcommand-line utility, increasing portability and reliability. - Code Refactoring: The file analysis and backup summary logic, which was previously part of the
runPreviewfunction, was refactored into new, separate functions:runManifestGenerationanddisplayBackupSummary. This allows the logic to be reused by thebackup,backup --preview, and newsynccommands. - Build Process: The
build-phar.phpscript was improved to manually add only the requireddisembarkscript andvendordirectory, which creates a smaller and cleaner final.pharfile.
v2.1.0
v2.1.0 - October 23rd, 2025
Improved
- Backup Efficiency: The backup process has been optimized to run the file analysis and manifest generation only once. The analysis now runs during the initial preview step, and the generated file manifest is reused for the actual backup. This avoids the previous behavior of running the analysis twice (once for preview, once for the backup), significantly speeding up the operation.
- Preview & Cleanup Logic: The
runPreviewfunction was refactored to accept abackup_tokenand return the generated file manifest. The mainbackupfunction now correctly callscleanupTemporaryFilesif the user exits after a--previewor cancels the backup. Previously,runPreviewgenerated its own temporary token and cleaned up after itself.
Changed
- Moved the changelog from the bottom of
readme.mdto its own dedicatedchangelog.mdfile.
v2.0.0
v2.0.0 - October 17, 2025
Changed
- Re-architected Backup Process: The backup process is now "local-first." The CLI downloads all database tables and file chunks individually and assembles the final
.zipfile on the user's local machine. - Removed the dependency on the remote
disembark.host/generate-zipscript for backup finalization.
Added
- The
backupcommand now creates a local temporarysnapshot-<timestamp>directory to build the backup locally. - Added new local helper functions for zipping (
zip_directory), unzipping (unzip_file), and deleting directories (delete_directory) to support the new local backup process. - Added a
download_file_directfunction usingcurlfor more reliable downloading of backup parts. - The backup process now calls a
/cleanup-fileendpoint to delete temporary backup chunks from the server as they are downloaded.
Improved
- File Manifest: The file manifest generation is now a more robust, multi-step process (initiate, scan, chunkify, process, finalize) to better handle large sites and complex exclusion rules.
- Backup Preview: The
backup --previewcommand was rewritten to use the new multi-step manifest generation, providing a much more accurate and reliable preview of the backup content before the backup runs. - Configuration: The
connectcommand is now more resilient and can read legacy~/.disembarkconfiguration files that were stored as a single object instead of an array. - Updated the
readme.mdinstallation URL to point to the official GitHub Releases page instead of themainbranch.
v1.1.0
v1.1.0 - October 10th 2025
Added
- A new
listcommand has been added to display all connected sites. - A new
upgradecommand to update Disembark CLI to latest version. - The
backupcommand now includes an--exclude-tablesoption, which allows you to exclude specific database tables from the backup. This feature supports the use of wildcards for more flexible table selection. - You can now use the
-xargument with thebackupcommand to exclude certain files or directories from the backup. You can use this option multiple times to exclude several paths. - A new
--previewargument has been added to thebackupcommand to display a list of files and tables that will be included in the backup without actually running the backup process.
v1.0
v1.0.0 - June 8th 2024
Initial Release
- Provides a
connectcommand to securely save a site URL and token. - Credentials are saved to a
.disembarkfile in the user's home directory. - The tool can add new site credentials or update the token for an existing site.
- Verifies that the site URL format is valid before attempting to connect.
- Includes a
backupcommand to initiate the backup process for a specified site. - Reads the appropriate token for the site from the configuration file.
- Performs backups by making a series of requests to the Disembark WordPress plugin API.
- The backup process includes exporting individual database tables, zipping the full database, and processing site files in batches.
- Finalizes the backup by executing a remote script via
curlto generate a complete zip archive. - The script is designed to be run from the command line.
- A
versioncommand is included to display the current version of the tool. - A
showHelpfunction displays usage instructions for available commands. - Provides real-time progress and status messages during the backup process.
- Includes a utility to convert bytes into a human-readable file size format.