Duplicati

System Utilities

Free backup software to store encrypted backups online.

Latest v2.4.0.0_stable_2026-09-03 · by DuplicatiWritten in C#Websiteduplicati/duplicatiRSS

Release activity

Release activity — 15 releases across 14 days since May 22, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 22, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
MondayNo releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 20261 release on Jul 13, 20261 release on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 20261 release on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 20261 release on Aug 25, 2026No releases on Sep 1, 2026No releases on Sep 8, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 20262 releases on Jun 10, 2026No releases on Jun 17, 20261 release on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 20261 release on Aug 26, 2026No releases on Sep 2, 2026No releases on Sep 9, 2026
ThursdayNo releases on May 28, 20261 release on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 20261 release on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 20261 release on Sep 3, 2026No releases on Sep 10, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 20261 release on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 20261 release on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 20261 release on Sep 4, 2026No releases on Sep 11, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

15 releases since May 22, 2026, busiest day 2

Changelog

v2.4.0.100_canary_2026-09-04

Pre-release
Added 10
  • Add a new native VSS snapshot provider on Windows that replaces previous providers and does not require VCRedist
  • Add a new WMI VSS snapshot provider to replace the previously supported WMIC provider
  • Enable VSS snapshots for full-disk backups with automatic detection and transparent usage
  • Add support for recreating a database from an interrupted first backup
  • Add `--vss-writer-flush-timeout` option to control how long to wait for VSS writers
  • Add an API endpoint for purging files across backup versions
Changed 6
  • Change repair handler to report defective metadata instead of silently reassigning it
  • Change repair handler to direct users to run `list-broken-files` and `purge-broken-files` for metadata issues
  • Improve detection and notification of zero-length and defective blocksets
  • Speed up `purge-broken-files` by reusing the invalid-blocks query
  • Apply performance fixes to local database queries affecting most operations
  • Automatically exclude `System Volume Information` folder from backups
Fixed 2
  • Fix Hyper-V and MSSQL enumeration with the native VSS provider
  • Fix clean install potentially starting with an empty machine ID
Removed 1
  • Remove support for WMIC provider as Windows updates will remove the executable it relies on
Deprecated 1
  • Mark `--synchronous-upload` option as deprecated in favor of `--asynchronous-upload-limit`

From Duplicati

This release is a canary release intended to be used for testing.

New Native VSS snapshot provider

This release introduces a new native VSS snapshot provider on Windows that replaces the previous providers. Hyper-V and MSSQL enumeration work with the native provider which is now default.

The new native VSS snapshot provider does not require VCRedist to be installed and works on x86, x64, and Arm64 systems. The existing AlphaVSS and Vanara-based VSS snapshot providers can still be selected (but not on Arm64). They will be removed in a future version as AlphaVSS is no longer maintained and the new native library has fewer dependencies than Vanara.

New WMI VSS snapshot provider

The previously supported WMIC provider has been removed as Windows updates will remove the executable it relies on. Instead a new WMI snapshot provider is added which works similar to WMIC.

The WMI (and WMIC) provider gives a more light-weight VSS functionality, where it does not flush the writers (MSSQL, HyperV, etc) but just ensures a crash-consistent disk snapshot.

If you rely on systems that integrate with VSS, use the Native provider, if you just want to back up locked files, use the WMI provider.

Full-disk backup and VSS snapshots

With this release VSS is now also used for full-disk backups. This is fully transparent and works such that an active snapshot is detected and the full-disk reader will use the snapshot to access the disk contents.

Recovering from an interrupted first backup

Interrupting a first backup previously left the destination in an unrecoverable state: blocks and index files were uploaded, but no filelist was written, so neither backup nor repair could proceed. The recreate logic can now reconstruct a database from the index files alone, so an interrupted first backup can be resumed instead of requiring the destination to be discarded, thanks @JamBalaya56562.

Repair no longer removes metadata

The repair handler previously attempted to fix defective metadata with various reassignment strategies that could silently remove metadata. It now reports the problem and asks the user to run list-broken-files and purge-broken-files, which rewire the metadata while keeping the file content. Detection of zero-length and otherwise defective blocksets has also been improved.

Azure Blob Storage path support

The Azure Blob Storage backend previously ignored the path part of the destination URL and always stored data in the root of the container. The path is now treated as a prefix, so backups can be placed in a subfolder of a container. If you previously used a path in an Azure Blob Storage destination URL, the data was stored in the root; after upgrading, new backups will use the path as a prefix and will not see the previously uploaded files.

Prevent empty machine ID

A startup sequence issue could cause a clean install to report and connect to the console without a machine ID, which could cause various unwanted behaviors.

Linux sleep prevention

Duplicati can now prevent the system from sleeping during backup operations on Linux, similar to the existing support on Windows and macOS.

AppImage .zsync support

This release now has the .zsync file and relevant metadata such that future updates can be done efficiently and automatically by AppImage managers that support it.

--synchronous-upload deprecated

The --synchronous-upload option no longer has any effect and is now marked as deprecated. Existing configurations that set it will continue to load, but a warning is now logged. Use --asynchronous-upload-limit instead.

Default exclude volume information

The System Volume Information folder is now automatically excluded from backups as it cannot be reliably read and cannot be used in a restore process.

Performance and stability updates

Several performance fixes are applied to the local database queries, affecting most operations, mostly by @JamBalaya56562. Many edge cases around unexpected server responses and url encoding issues have also been adressed, thanks @JamBalaya56562.

Detailed list of changes
  • Updated all localizations, thanks to all translators
  • Added a native VSS snapshot provider, replacing the WMI-based approach
  • Fixed Hyper-V and MSSQL enumeration with the native VSS provider
  • Added --vss-writer-flush-timeout to control how long to wait for VSS writers
  • Used VSS for full-disk backups and automatically excluded System Volume Information
  • Hid unsupported VSS options on Arm64
  • Added support for recreating a database from an interrupted first backup, thanks @JamBalaya56562
  • Changed repair to report defective metadata instead of silently reassigning it
  • Improved detection and notification of zero-length and defective blocksets
  • Sped up purge-broken-files by reusing the invalid-blocks query
  • Added an API endpoint for purging files across backup versions
  • Added permission checks for MS365 and Google Workspace so users can verify granted permissions
  • Fixed MS365 group classifications and added validation of source and destination provider options
  • Added support for a path prefix in Azure Blob Storage destinations
  • Fixed --prefix combined with path separators in sync operations
  • Fixed a clean install potentially starting with an empty machine ID
  • Added sleep prevention support on Linux
  • Fixed the destination self-test incorrectly failing on OpenStack when a probe file was already gone, thanks @JamBalaya56562
  • Fixed Google Cloud Storage not detecting a delete of a missing file
  • Fixed Google Cloud Storage URL encoding that broke authentication
  • Fixed OneDrive browsing failing on the drive root and not returning folders
  • Fixed OneDrive folder names with percent signs or hashes not being reachable, thanks @JamBalaya56562
  • Fixed Dropbox folder names with percent signs being decoded twice, thanks @JamBalaya56562
  • Fixed SharePoint destination paths containing + being misread, thanks @JamBalaya56562
  • Fixed WebDAV destination paths containing + being misread, thanks @JamBalaya56562
  • Fixed hostless backend URLs such as dropbox://?authid=... failing to enumerate from the root
  • Fixed a Windows source given as a bare drive letter (e.g., C:) resolving to the process working directory instead of the drive root, thanks @JamBalaya56562
  • Preserved the fileset timestamp when replacing a missing dlist file during repair, thanks @JamBalaya56562
  • Recorded the fileset timestamp in the dlist file so a database recreate keeps it, thanks @JamBalaya56562
  • Fixed URL query string values not always being preserved when modifying URLs
  • Indexed the verification tables on the compared columns, significantly speeding up remote volume verification, thanks @JamBalaya56562
  • Removed a redundant DISTINCT that blocked index lookups in fileset queries, thanks @JamBalaya56562
  • Stopped deduplicating twice in the fileset consistency check, thanks @JamBalaya56562
  • Made BackendTester re-read the remote folder before abandoning a test run, and accept an already-deleted file during cleanup, thanks @JamBalaya56562
  • Cleared the Filen file cache when a write did not come back, preventing stale lookups, thanks @JamBalaya56562
  • Re-read the Filejump file list when a delete got no answer, thanks @JamBalaya56562
  • Re-read the Drime file list when a delete got no answer, thanks @JamBalaya56562
  • Deprecated --synchronous-upload which no longer has any effect, thanks @JamBalaya56562
  • Added .zsync files for .appimage releases, enabling delta updates
  • Updated System.CommandLine from pre-release to the stable 2.0 release
  • Regenerated the libsecret DBus bindings with the latest tooling
Updates to ngclient
  • Changed the order for navigation on new backups: source before destination
  • Added support for purging files from the UI
  • Added support for checking permissions with MS365 and Google Workspace
  • Fixed Windows search results having a leading \ prefix, causing empty restores
  • Fixed WebDAV destination path normalization, thanks @JamBalaya56562
  • Fixed folder filters losing their type while editing, thanks @JamBalaya56562
  • Fixed folder exclusions not propagating through the file tree, thanks @JamBalaya56562
  • Fixed file attribute exclusions not being preserved when editing, thanks @JamBalaya56562
  • Fixed local schedule dates being reset when editing, thanks @JamBalaya56562
  • Fixed custom form validator behavior, thanks @JamBalaya56562
  • Fixed commandline result polling, thanks @JamBalaya56562
  • Hardened HTTP interceptor request handling, thanks @JamBalaya56562
  • Fixed the file browser height on the restore page
  • Fixed flicker in the Duplicati Storage backup picker
  • Fixed connection state being set incorrectly with socket relay
  • Migrated to hey-api's modern Angular client, thanks @sp90
  • Fixed termination display
  • Updated all translations, thanks to all translators
View originalPermalink
How v2.4.0.100_canary_2026-09-04 went

v2.4.0.0_stable_2026-09-03

Latest
Added 14
  • Add --allow-insecure-datafolder flag, DUPLICATI__ALLOW_INSECURE_DATAFOLDER environment variable, and insecure-permissions.txt file in installation folder to opt out of permission checks
  • Add secure-datafolder command to ConfigureTool to force correct permissions on data folder
  • Add sync copy mode that simply copies files from source to destination with support for one-way sync and optional deletion with --sync-then-delete
  • Add --sync-remote-state option with UseRemoteState, UseLocalState, and BlindlyUpload settings to control remote file tracking during sync
  • Support sync jobs with remote sources, snapshots, and multiple destinations
  • Add sync mode configuration via UI toggle in first step and CLI support
Changed 3
  • Move insecure-permissions.txt file location from data folder to installation folder
  • Integrate service installation and TLS certificate generation into Windows installer with simple checkboxes
  • Configure Windows service as delay-start service to avoid startup issues on boot
Removed 1
  • Remove support for preload.json at /usr/local/share/Duplicati/preload.json and C:\ProgramData\Duplicati\preload.json
Security 2
  • Require exact data folder permissions and refuse to use data folders with incorrect permissions, previously silently locked down
  • Load preload.json only if folder passes permission check or opt-out methods are activated

From Duplicati

This release is a stable release that supersedes the 2.3.0.4 stable release. It contains all changes from the 2.3.1.0 and 2.3.1.1 beta releases.

Breaking change: Locked-down data folder permissions

This release hardens security around the data folder and is a breaking change for some setups.

For most users, this should not be a problem as the folders should already have the correct permissions.

Duplicati now requires that the data folder has the exact expected permissions, or it will refuse to use it. Previously, Duplicati would silently lock down the folder if it was not already locked.

To opt out of the permission check, you need to either pass --allow-insecure-datafolder, set the environment variable DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true, or place a file named insecure-permissions.txt in the installation folder.

Note that the previous method of placing insecure-permissions.txt in the data folder is no longer supported.

This change also applies to preload.json, such that it will only be loaded if the folder is trusted, or one of the opt-out methods are activated. Additionally, the previous trusted paths /usr/local/share/Duplicati/preload.json and C:\ProgramData\Duplicati\preload.json are no longer supported as they cannot be guaranteed to be locked down.

A preload.json inside the data folder is still supported, provided the folder passes the permission check.

The ConfigureTool has a new secure-datafolder command that can be used to force the correct permissions on the data folder.

For most users this should not cause any problems, as Duplicati has been locking down the folder already, but if you rely on lax folder permissions the setup needs to change. Some Docker setups may not be able to set the permissions and will need to apply DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true in the image to run without the protections.

Sync copy mode

This release adds an often requested feature that enables simple copying of files from source to destination. Where the regular backups are deduplicated, compressed, encrypted and versioned, the new sync mode will instead simply copy from source to destination.

The copy is currently a one-way sync, where the source is replicated on the destination. Files can be deleted on the destination during sync (use --sync-then-delete), but destination folders will not be deleted.

The option --sync-remote-state is by default set to UseRemoteState which will list the destination and figure out what to upload. The setting UseLocalState uses a local database, similar to how backups work, to keep track of known remote files, and reduce the amount of remote listings done. Finally, the BlindlyUpload setting will just copy everything as-is to the remote.

The sync jobs support remote sources, snapshots, and multiple destinations. If snapshots are enabled, the copy is done from the snapshot, ensuring reliable reads.

Configuration of such a sync job is done the same way as with backup, but using a toggle option in the first step of the UI. Note that backup and sync jobs are not compatible as they use very different storage logic, so it is not possible to change the job mode after creating a job.

CLI mode also supports sync.

Improved Windows installer

This change brings a major update to the Windows installers, which now integrates the ability to run as a service, as well as generate and use TLS (https). The service feature has been present for a while in the WindowsService.exe tool and the TLS certificates were added as part of the Duplicati.CommandLine.ConfigureTool.exe. With this update these things are now integrated into the installer, and exposed as simple checkboxes to toggle the features. Installing the service from a regular user account, will also auto-generate a secure password and configure the TrayIcon to connect to the service (only for the current user).

If you have installed the service manually, do not activate the new checkbox as it only works if there is no pre-existing service. The installer-driven service does not support commandline arguments directly, but instead prefers preload.json files to configure it. The MSI supports the property INSTALL_PRELOAD=true which will cause it to pick up a preload.json file from the same folder the MSI is located in.

The Windows service is now also configured as delay-start service to avoid startup issues on boot.

Live reporting module

This release adds a new live-reporting module that sends the current progress of backups to a user-specified URL. The intention is that this can be used for dashboards that want to show the current progress for backups. By default, the module is not configured and has no impact.

The module supports multiple activity targets and includes metadata in the activity report, as well as a console-provided activity URL.

PAR2 parity / error-correction for remote volumes

This release adds a pluggable parity module that produces error-correction data for remote data volumes, so they can be repaired after bit-rot or corruption on the backend, thanks @JamBalaya56562.

To enable this, ensure that par2 is installed on the machine and set --parity-module=par2. Setting this will cause additional .par2 files to be uploaded.

Store configuration with backup

This release revives the store-task-config option and makes it enabled by default for encrypted backups. The backup configuration is stored with the backup data, making it easier to restore a configuration later.

For unencrypted backups, no secrets are stored by default. The behavior can be customized with options to store none, self, or all configurations, with or without secrets. The UI has been updated to allow restoring from the destination config. If multiple configurations are found, the user can select one or more backup configurations to restore.

MS365 subsites and shared mailboxes

This release improves the Microsoft 365 backup support with two additions. Support for backing up SharePoint subsites has been added, making it possible to include sub-sites beneath a site collection in a backup.

The handling of shared mailboxes has also been improved, with better detection and enumeration of shared mailboxes within a tenant.

The license counting has been simplified. A Duplicati license is now required if an MS365 license is assigned, without needing per-user lookups. The same logic applies to both users and sites, and personal sites of users without a license are not counted. Filtering based on classification is still supported.

Full disk backup support (Windows, Linux, MacOS)

This release extends the full disk backup feature to support Linux and MacOS, in addition to Windows.

The Linux support allows backup and restore of entire disks on Linux, including partition tables. The MacOS support adds basic backup and restore of entire disks, including partition tables.

Partition-level backup and restore is now supported, making it possible to select individual partitions as backup sources, or restore a single partition from a full disk backup to a different partition.

Like the Office 365 / Google Workspace backup features, this is a proprietary module (source available).

Full disk backup requires administrative privileges to access the disk directly. Full disk restore requires administrative privileges and requires that the disk is unmounted and not write-protected.

Desktop notifications on all platforms

Desktop notifications are now supported on all platforms. Windows toast notifications have been implemented with click-to-open support, and native notification support has been added for macOS and Linux (via DBus), thanks @JamBalaya56562 for the Windows implementation.

Restore reliability improvements

Several issues with the restore process have been fixed. Restores now properly respond to stop/abort requests, file reads and writes can be interrupted, and a critical bug with wrong seek offsets for partial blocks has been fixed, which could cause restores to fail, thanks @JamBalaya56562.

An index has been added on the restore file table join columns for better restore performance, thanks @JamBalaya56562.

Misconfigured filter detection

A new warning system detects when filters are configured to unconditionally exclude everything. A post-backup check also warns if no files were examined during backup, which helps catch misconfigurations that would otherwise silently produce empty backups.

New backends

Added support for Drime Cloud as a new storage backend.

Added a new backend for the Spanish provider Movistar, thanks @redmars27. The backend is marked as "untested" as it can only be used (and tested) by Movistar customers.

Deprecated backends

The previous "SharePoint" and "OneDrive for Business" backends have been marked as deprecated, as Microsoft shut down the API they were calling. The migration step is to use the "SharePoint v2" backend (renamed to just "SharePoint" in this version) which uses the Microsoft Graph API.

Duplicati Storage

This release includes Duplicati Storage which is integrated with the Duplicati console. Once a machine is connected to the console it can use the account's storage allocations with zero configuration required.

SharpAESCrypt v3

Updated the SharpAESCrypt encryption library to support "AES Crypt Stream Format v3", which has a number of improvements over the v2 format. For this release, the default written format remains v2, but we encourage you to set the environment variable DUPLICATI__AES_VERSION=3 to test the new format. Note: if you set this version to 3, the new remote volumes cannot be read by Duplicati versions older than 2.3.0.101.

Support for MacOS ACLs

This release adds support for reading MacOS attributes and ACL strings during backup, and restoring them when permission restores are selected.

Support for Windows Alternate Data Streams

This release implements support for reading and writing alternate data streams (ADS) on Windows. This feature is disabled by default and can be enabled with the advanced option --enable-ads-backup. If ADS content is found in the source, this is restored by default but can be disabled with --disable-ads-restore.

Fixed MSSQL backups

Since 2.1 the MSSQL backups would produce errors if attempting to back up an MSSQL server that was running as the default instance, but would work with a named instance. This release fixes the issue and now handles both default- and named instances.

Improved missing source handling

The default behavior when sources are missing has changed. Previously, a missing source would abort the backup. Now, a missing source will only trigger a warning unless the option --abort-if-source-missing is set. The option --allow-missing-source can still be used to suppress warnings entirely. If no sources are found at all, the backup will still abort.

Relative database paths

Database paths are now stored relative to the data folder by default. This makes it simpler to move the data folder as the paths are not stored in full. Existing backups retain their full paths, but manually updating a database path will make it relative if it is within the data folder.

Improved TLS certificate validation

The TLS certificate validation has been improved, and Duplicati now falls back to using the OS-default certificate validator. This should resolve issues with custom certificate chains and improve compatibility with various TLS setups.

Improved source tree and filter accuracy

The source tree now shows the content of remote sources, including Microsoft 365 tenants, Google Workspace subscriptions and full-disk content. Filter evaluation is performed server-side for non-trivial filters, ensuring the same code is used for display and actual backup operations.

Helper entries like "My Documents" are now shown in all picker situations and resolve to the full path. The destination configuration supports browsing the remote file system.

New welcome page and start

The UI will now show a welcome page showing how to connect to the console with an option to continue without. This can be suppressed with the option --webservice-suppress-welcome-page=true or environment variable DUPLICATI__WEBSERVICE_SUPPRESS_WELCOME_PAGE=true.

If the connection is made from the TrayIcon, the initial dialog asking to set a password is no longer shown, as the intention is to use the TrayIcon to connect. It is still possible to change the password from the Settings page if needed.

Other notable changes

  • AutoTune tool: A new Duplicati.CommandLine.AutoTuneTool / duplicati-autotune tool to help evaluate and optimize performance-related settings.
  • Read-only backend testing: Backends now support read-only context-aware testing, safe for testing restore destinations without risking unintended changes.
  • Remote synchronization improvements: Integrated remote synchronization (3-2-1 backups) into the Main library with quota checks and improved error handling.
  • Multi-version restore: New --restore-all-files option to restore files matching a filter from multiple versions.
  • Performance improvements: ArrayPool-based allocations reduce memory pressure during backups. Faster delete queries for large backups.
  • Post-backup scripts: The RunScript module now supports running scripts when a backup has finished, but before checks and compaction.
  • Database tool commands: Added verify and cleanup commands to the database tool. Added wipe-encryption command for recovering encrypted databases.
  • Slow query monitor: Added tracking of long-running database queries to help diagnose performance issues.
  • Crash dialog: Added a crash dialog window that appears when the application encounters an unhandled exception.
  • Updated LibSecret support for KDE Plasma 5+6, fixing issues with the default collection.
  • More robust server connection: The remote server connection has been hardened with a watchdog that restarts unresponsive connections.
  • Auto-configure database metadata: The --store-metadata-content-in-database option is automatically applied when needed by the source provider.
  • MS365/Google permission testing: Added ability to verify that granted permissions match what is required for backup or restore.

Thanks to contributors

This release is a collaboration effort from the Duplicati community. Thanks to the many contributors who report issues, test new releases, request features, write documentation, maintain translations, and contribute to the codebase.

View originalPermalink
How v2.4.0.0_stable_2026-09-03 went

v2.3.1.1_beta_2026-08-26

Pre-release
Added 9
  • Support selecting individual partitions as backup sources in full disk backup
  • Support partition-to-partition restores from full disk backups
  • Windows toast notifications with click-to-open support
  • Native notifications for macOS
  • Native notifications for Linux via DBus
  • Detection and warning for filters configured to unconditionally exclude everything
Changed 4
  • Simplified MS365 license counting to check license assignment without per-user lookups
  • MS365 user and site listing now uses alphabetical sorting and fewer API calls
  • HyperV and MSSQL enumeration now handles errors gracefully
  • Backend listing pagination improved
Fixed 6
  • Wrong seek offset in restore when copying verified local blocks that could break restores
  • Restore not responding to stop or abort requests
  • Restore cancellation not interrupting file reads and writes
  • Index file recreation producing incomplete index files
  • Credentials embedded in malformed URLs leaking into log messages
  • Database query for deleting old backup versions optimized to significantly speed up delete operations

From Duplicati

2026-08-26 - 2.3.1.1_beta_2026-08-26

This release is a Beta release intended to be used for testing to identify any issues before releasing the next stable version.

Partition level full disk backup and restore

The full disk backup feature now supports selecting individual partitions as backup sources, in addition to entire disks. This makes it more intuitive to back up a specific partition without filtering.

Restore now also supports partition-to-partition restores, so it is possible to restore a single partition from a full disk backup, or restore a partition backup to a different partition.

Desktop notifications on all platforms

Desktop notifications are now supported on all platforms. Windows toast notifications have been implemented (with click-to-open support), and native notification support has been added for macOS and Linux (via DBus), thanks @JamBalaya56562.

Restore cancellation and reliability improvements

Several issues with the restore process have been fixed. Restores now properly respond to stop/abort requests, file reads and writes can be interrupted, and a critical bug with wrong seek offsets for partial blocks has been fixed, which could cause restores to fail for most files, thanks @JamBalaya56562.

Misconfigured filter detection

A new warning system detects when filters are configured to unconditionally exclude everything. A post-backup check also warns if no files were examined during backup, which helps catch misconfigurations that would otherwise silently produce empty backups.

More robust server connection

The remote server connection has been hardened against network events that could cause it to drop. A watchdog monitors the connection and restarts it if it has been unresponsive for an extended period.

Improved MS365 license counting

The MS365 license counting logic has been simplified. A Duplicati license is now required if an MS365 license is assigned, without needing per-user lookups. The same logic applies to both users and sites, and personal sites of users without a license are not counted.

Faster delete operations

The database query for deleting old backup versions has been optimized, significantly speeding up the delete operation for large backups.

Fixed index file recreation

An issue where recreated index files could be incomplete has been fixed. The index file recreation now happens after block volumes are fully processed, ensuring all blocklists are included. This fixes the intermittent "Found N faulty index files" verification error.

Security fix for credential leaks

Fixed an issue where credentials embedded in URLs could leak into log messages, but only on malformed URLs, thanks @JamBalaya56562.

Auto-configure database metadata

When using a source provider that requires database metadata (such as full disk backup), the --store-metadata-content-in-database option is now automatically applied when needed. This can still be overridden manually.

Detailed list of changes
  • Added partition-level full disk backup and partition-to-partition restore support
  • Added Windows toast notifications with click-to-open, thanks @JamBalaya56562
  • Added macOS native notifications
  • Added Linux DBus notifications
  • Added detection and warning for misconfigured filters that exclude everything
  • Added watchdog for more robust console connection handling
  • Added automatic database metadata configuration for source providers that need it
  • Added index on restore file table join columns for better restore performance, thanks @JamBalaya56562
  • Added sync command to CLI help output
  • Simplified MS365 license counting to check license assignment without per-user lookups
  • Improved MS365 user/site listing with alphabetical sorting and fewer API calls
  • Improved HyperV and MSSQL enumeration to handle errors gracefully
  • Improved pagination for backend listing results
  • Fixed wrong seek offset in restore when copying verified local blocks, which could break restores, thanks @JamBalaya56562
  • Fixed restore not responding to stop/abort requests, thanks @JamBalaya56562
  • Fixed restore cancellation not interrupting file reads and writes, thanks @JamBalaya56562
  • Fixed local files being incorrectly marked as broken when a shutdown interrupted writes, thanks @JamBalaya56562
  • Fixed requested shutdown being reported as a failure instead of a user-initiated stop, thanks @JamBalaya56562
  • Fixed index file recreation producing incomplete index files
  • Fixed similarly named paths being incorrectly excluded from backup sources
  • Fixed quota errors being reported during read-only operations like restore, thanks @JamBalaya56562
  • Fixed stale query statistics causing slow backups, thanks @JamBalaya56562
  • Fixed backend statistics reporting unset timestamps in JSON output, thanks @JamBalaya56562
  • Fixed legacy symlink folder restore using wrong path, thanks @JamBalaya56562
  • Fixed slow query monitoring not tracking database queries, thanks @JamBalaya56562
  • Fixed credentials leaking through URL sanitizer on malformed URLs, thanks @JamBalaya56562
  • Fixed destination connection test failing on missing probe file, thanks @JamBalaya56562
  • Fixed invalid update check interval being silently ignored, thanks @JamBalaya56562
  • Fixed Google credentials not being read as service accounts, thanks @JamBalaya56562
  • Fixed SharpAESCrypt version inconsistency across projects, thanks @JamBalaya56562
  • Fixed Linux notifier using obsolete DBus API, thanks @JamBalaya56562
  • Fixed Microsoft.Extensions packages left at older versions, thanks @JamBalaya56562
  • Fixed SecretProvider package version alignment, thanks @JamBalaya56562
  • Fixed Box folder lookup failing when folder name already exists, thanks @JamBalaya56562
  • Fixed Box backend ignoring the requested path in entry lookups, thanks @JamBalaya56562
  • Fixed IDrive e2 backend GetEntryAsync returning null for all paths, thanks @JamBalaya56562
  • Fixed pCloud uploads not checking HTTP response status, thanks @JamBalaya56562
  • Fixed Tahoe-LAFS deletes not checking response status, thanks @JamBalaya56562
  • Fixed Filejump error handler infinite recursion causing stack overflow, thanks @JamBalaya56562
  • Fixed Filen downloads not checking response status before decrypting, thanks @JamBalaya56562
  • Fixed full disk provider not initializing when listing folders
  • Updated all NuGet packages to latest versions
  • Updated SSH.NET dependency
  • Updated all translations, thanks to all translators
  • Updated licenses project with missing packages
Changes in ngclient
  • Added support for choosing sort order in the file tree
  • Added support for partition-level full disk backup and restore in the UI
  • Added warning if filters appear to exclude everything
  • Added load-more pagination for file browsing
  • Added prefill of restore options from configured settings, thanks @JamBalaya56562
  • Added option to allow encryption changes for imported backups, thanks @JamBalaya56562
  • Improved schedule summary with templates, reducing translation burden, thanks @JamBalaya56562
  • Improved MS365 tenant counter display
  • Disabled menu options that do not apply to sync jobs
  • Fixed Chinese locale selection, thanks @JamBalaya56562 and @scambra
  • Fixed source filter highlighting, thanks @JamBalaya56562
  • Fixed commandline output auto-scrolling, thanks @JamBalaya56562
  • Fixed remote source selection copy, thanks @JamBalaya56562
  • Fixed destination editor identity preservation, thanks @JamBalaya56562
  • Fixed usage statistics compatibility across UIs, thanks @JamBalaya56562
  • Fixed absolute assets path ignoring X-Forwarded-Prefix header, thanks @scambra
  • Updated all translations, thanks to all translators
View originalPermalink
How v2.3.1.1_beta_2026-08-26 went

v2.3.0.110_canary_2026-08-25

Pre-release
Added 8
  • Backup versions can now carry an optional text label for marking and distinguishing versions
  • Partition-level backup and restore support, allowing selection of a single disk partition as backup source and partition-to-partition restores
  • Automatic metadata storage for source providers that require it, such as the disk image provider
  • Native QNAP package support with OS integration and administrator-only access
  • Settings to control sorting of tree views in ngclient
  • Support for editing version labels in ngclient
  • Support for browsing disks and partitions and for restoring disk images and partitions in ngclient
  • Watchdog that restarts a stale remote management connection
Changed 3
  • Database schema updated to version 20, adding a label column to the fileset table
  • Google Cloud Storage credentials are now read strictly as service account credentials, refusing other credential types
  • Menu options in ngclient that do not apply to sync jobs are now disabled
Fixed 9
  • Disk image provider not initializing when listing drives, and improved disk enumeration and filter handling on Windows
  • WebDAV destinations with a plus sign in the path reporting uploaded files as missing
  • Windows file:// target URLs with a query string being misparsed
  • Quota errors being reported on read-only operations such as restore
  • Stale SQLite query statistics causing extremely slow fileset and consistency queries on growing databases
  • Cleanup after deleting a backup version by avoiding a full table scan

From Duplicati

This release is a canary release intended to be used for testing.

Database update to version 20

This release updates the local database schema to version 20. The update adds a label column to the fileset table and is applied automatically on first use. After the update, the database can no longer be opened by earlier versions of Duplicati. If you need to downgrade, the bundled database tool (duplicati-database-tool) can downgrade the database back to version 19; downgrading removes the labels, but otherwise causes no data loss.

Labels on backup versions

Backup versions can now carry an optional text label. Labels have no functional purpose, but they help mark and distinguish versions, for example when backups are hand-curated instead of running on a schedule. The CLI and UI supports setting and showing labels.

Partition-level backup and restore

It is now possible to select a single disk partition as the backup source, instead of selecting the full disk and filtering the unwanted partitions. Restores are likewise more flexible: in addition to disk-to-disk restores, a single partition can now be restored into a partition on another disk, creating the partition as needed.

This also fixes a bug where a failing priority file would leave the restore stuck until it was cancelled, and a number of issues with enumerating and filtering disks and partitions, in particular on Windows.

Automatic metadata storage for sources that need it

Backups using a source provider that relies on database metadata, such as the disk image provider, previously required the user to set --store-metadata-content-in-database=true manually. The setting is now applied automatically when the source needs it, and can still be overridden by setting the option explicitly.

QNAP packages

This release adds native QNAP package support. Similar to the Synology package, it integrates with the QNAP OS, uses the built-in authentication, and only allows access for administrators.

Stricter Google Cloud Storage credentials

Google Cloud Storage credentials are now read as service account credentials, which is what the options are documented to take. Other credential types, such as stored user credentials or external account configurations, are now refused. If you authenticate to Google Cloud Storage, or the Google Cloud secret provider, with anything other than a service account key, you need to switch to a service account key.

Detailed list of changes
  • Updated all localizations, thanks to all translators
  • Added labels to backup versions, with CLI, API, and UI support
  • Added partition-level backup and partition-to-partition restore
  • Fixed disk image provider not initializing when listing drives, and improved disk enumeration and filter handling on Windows
  • Automatically enabled --store-metadata-content-in-database when the source provider requires it
  • Added native QNAP package support
  • Added a watchdog that restarts a stale remote management connection, and fixed issues that could drop the connection
  • Google Cloud Storage credentials are now read strictly as service accounts, thanks @JamBalaya56562
  • Fixed WebDAV destinations with a + in the path reporting uploaded files as missing, thanks @JamBalaya56562
  • Fixed Windows file:// target URLs with a query string being misparsed
  • Stopped reporting quota errors on read-only operations such as restore, thanks @JamBalaya56562
  • Fixed stale SQLite query statistics causing extremely slow fileset and consistency queries on growing databases, thanks @JamBalaya56562
  • Sped up cleanup after deleting a backup version by avoiding a full table scan
  • Fixed a similarly named file and folder in the source causing the folder to be omitted, and allowed explicitly including a file inside an excluded folder
  • Fixed backend statistics reporting a bogus zero timestamp in the operation log, thanks @JamBalaya56562
  • Fixed Linux desktop notifications using an unsupported signal API, thanks @JamBalaya56562
  • Fixed a restore with failing priority files getting stuck instead of failing
  • Aligned SharpAESCrypt, AWSSDK.Core, Azure.Core, and Microsoft.Extensions package versions across the solution, thanks @JamBalaya56562
Updates to ngclient
  • Added settings to control sorting of tree views
  • Added support for editing version labels
  • Disabled menu options that do not apply to sync jobs
  • Fixed the destination editor mixing up connection state when a destination is removed, thanks @JamBalaya56562
  • Allowed changing encryption settings for imported backups, thanks @JamBalaya56562
  • Fixed the usage statistics setting not matching the format used by the legacy UI and server settings, thanks @JamBalaya56562
  • Added a plain-language summary to the custom schedule editor, thanks @JamBalaya56562
  • Added support for browsing disks and partitions and for restoring disk images and partitions
  • Fixed Chinese locale selection, thanks @JamBalaya56562
  • Fixed absolute asset paths ignoring the path prefix when running behind a reverse proxy, thanks @scambra
  • Updated all translations, thanks to all translators
View originalPermalink
How v2.3.0.110_canary_2026-08-25 went

v2.3.0.109_canary_2026-08-14

Pre-release
Added 5
  • Add native desktop notifications on Windows as toast notifications with click-to-open support, on macOS via the native notification center, and on Linux via DBus integration
  • Add support for native $VAR and ${VAR} environment variable syntax in paths and filters on Linux and macOS
  • Add validation that detects misconfigured filters and reports them with a warning instead of silently matching nothing
  • Add validation that rejects an unusable update check interval instead of ignoring it
  • Add validation that fails on an invalid webservice timezone instead of silently resetting it
Changed 7
  • Make restore honor stop requests promptly by letting an abort interrupt in-progress file reads and writes
  • Run all main database queries through the slow-query monitor so --long-database-query-threshold now warns about hanging queries
  • Match backend URL schemes without regard to case
  • Parse SSH, SMB, FTP, XMPP, pCloud, Tahoe-LAFS, and OAuth login URLs with the standard URI parser
  • Rename the internal URL parser to RelaxedUri
  • Recompute the next scheduled run when weekdays or interval change
  • Treat an existing folder as success when auto-creating a destination
Fixed 8
  • Fix aborted restore no longer reporting errors, blaming the backup, or leaking temporary files
  • Fix files interrupted by a shutdown no longer listed as broken during restore
  • Fix requested shutdown no longer reported as a failure
  • Fix legacy restore engine creating a real folder in place of a directory symlink
  • Fix wrong seek offset when copying verified local blocks during restore
  • Fix incorrect buffer copy when merging a hash fragment during restore
  • Fix restore not preserving the selected folder and not applying configured default options when restore request does not explicitly specify them
  • Fix credentials leaking through URL sanitizing on malformed URLs

From Duplicati

This release is a canary release intended to be used for testing.

Native desktop notifications

This release adds native desktop notifications on all supported desktop platforms. Backup results and other tray-icon notifications are now shown as real operating-system notifications instead of only appearing inside the UI.

On Windows, notifications are shown as Windows toast notifications with click-to-open support, thanks @JamBalaya56562. On macOS, notifications are shown via the native notification center. On Linux, notifications are sent over DBus and integrate with the desktop environment's notification daemon.

Native environment variable syntax on Linux and macOS

Paths and filters now support the native $VAR and ${VAR} environment variable syntax on Linux and macOS, most notably $HOME, thanks @JamBalaya56562. Previously only the Windows-style %VAR% syntax was expanded, so the native forms were silently left unexpanded on non-Windows systems.

The expansion is additive: %VAR% keeps working everywhere, and an undefined variable is left as-is. If you previously worked around this with literal $ characters in paths or filters, those entries will now be expanded.

Restore improvements and fixes

Several restore issues have been fixed in this release, thanks @JamBalaya56562. Restore now honors stop requests promptly: an abort interrupts in-progress file reads and writes, where it previously could keep running for minutes after the request. An aborted restore no longer reports errors, blames the backup, or leaks temporary files, and files that a shutdown interrupted are no longer listed as broken. A requested shutdown is in general no longer reported as a failure. Two bugs that could corrupt restored data were fixed: a wrong seek offset when copying verified local blocks, and an incorrect buffer copy when merging a hash fragment. Restore now also preserves the selected folder and applies configured default options (such as --restore-permissions) when the restore request does not explicitly specify them. On the legacy restore engine, restoring a directory symlink no longer creates a real folder in its place.

Stricter validation of settings

This release adds validation in places that previously failed silently, which may surface new warnings or errors after upgrading:

  • Misconfigured filters are now detected and reported with a warning, instead of silently matching nothing.
  • An unusable update check interval is now rejected instead of being ignored.
  • An invalid webservice timezone now fails instead of being silently reset.
Detailed list of changes
  • Let an abort interrupt the restore's file reads and writes, so a restore stops promptly, thanks @JamBalaya56562
  • Stopped listing files interrupted by a shutdown as broken during restore, thanks @JamBalaya56562
  • Stopped reporting a requested shutdown as a failure, thanks @JamBalaya56562
  • Fixed the legacy restore engine creating a real folder in place of a directory symlink, thanks @JamBalaya56562
  • Ran all main database queries through the slow-query monitor, so --long-database-query-threshold now warns about hanging queries, thanks @JamBalaya56562
  • Added native desktop notifications: Windows toast notifications with click-to-open, macOS notifications, and Linux DBus notifications, thanks @JamBalaya56562
  • Added support for native $VAR/${VAR} environment variable syntax in paths and filters on Linux and macOS, thanks @JamBalaya56562
  • Made restore honor stop requests; aborted restores no longer report errors, blame the backup, or leak temp files, thanks @JamBalaya56562
  • Fixed wrong seek offset when copying verified local blocks during restore, thanks @JamBalaya56562
  • Fixed incorrect buffer copy when merging a hash fragment during restore, thanks @JamBalaya56562
  • Preserved the selected folder during restore, thanks @JamBalaya56562
  • Let configured default options apply when restore options are not specified, thanks @JamBalaya56562
  • Prevented credentials from leaking through URL sanitizing on malformed URLs, thanks @JamBalaya56562
  • Fixed corrupted target URL for local paths containing @, thanks @JamBalaya56562
  • Matched backend URL schemes without regard to case, thanks @JamBalaya56562
  • Fixed decoding of %uXXXX unicode escapes in URLs, thanks @JamBalaya56562
  • Kept repeated path components in alternate update URLs, thanks @JamBalaya56562
  • Parsed SSH, SMB, FTP, XMPP, pCloud, Tahoe-LAFS, and OAuth login URLs with the standard URI parser, thanks @JamBalaya56562
  • Renamed the internal URL parser to RelaxedUri
  • Removed unused parts of the relaxed URL parser and documented its constraints, thanks @JamBalaya56562
  • Re-created missing index files after the block volumes are processed, thanks @JamBalaya56562
  • Recomputed the next scheduled run when weekdays or interval change, thanks @JamBalaya56562
  • Fixed logout not awaiting invalidation and not clearing the refresh cookie, thanks @JamBalaya56562
  • Improved console connection reconnect handling and allowed concurrent message processing
  • Guarded Hyper-V and MSSQL enumeration against errors
  • Simplified MS365 seat counting and improved site classification
  • Fixed MS365 user listing classification and return results sorted
  • Fixed pagination when listing backend destination folders
  • Treated an existing folder as success when auto-creating a destination, thanks @JamBalaya56562
  • Made the connection test accept a missing probe file, thanks @JamBalaya56562
  • Fixed Box folder resolution when the folder name is already in use, thanks @JamBalaya56562
  • Fixed Box lookups ignoring the requested path, thanks @JamBalaya56562
  • Fixed IDrive e2 reporting existing entries as missing, thanks @JamBalaya56562
  • Reported the server error when a multipart upload fails, thanks @JamBalaya56562
  • Observed read timeout on chunked uploads to Google and Dropbox, thanks @JamBalaya56562
  • Checked response status before decrypting a Filen download, thanks @JamBalaya56562
  • Checked response status before treating a pCloud upload as done, thanks @JamBalaya56562
  • Checked response status when deleting a Tahoe-LAFS file, thanks @JamBalaya56562
  • Fixed Filejump error handler calling itself indefinitely, thanks @JamBalaya56562
  • Made BackendTester cleanup accept an already deleted file, thanks @JamBalaya56562
  • Added detection of misconfigured filters with a warning
  • Rejected unusable update check intervals instead of ignoring them, thanks @JamBalaya56562
  • Failed on an invalid webservice timezone instead of silently resetting it, thanks @JamBalaya56562
  • Updated the help text for the sync command
  • Relaxed data folder permission checks for debug builds
  • Synced Japanese and Chinese README files with the English version, thanks @JamBalaya56562
  • Updated all packages to latest versions
  • Updated SSH.NET and BouncyCastle dependencies
  • Updated js-yaml, fast-uri, and postcss dependencies
  • Updated the licenses project
Updates to ngclient
  • Fixed commandline autoscrolling, thanks @JamBalaya56562
  • Fixed source filter highlighting, thanks @JamBalaya56562
  • Prefill restore settings from configured backup settings, thanks @JamBalaya56562
  • Updated Google Workspace icon
  • Fixed pagination in source tree
  • Database query timeout is now a "short time" type
  • Added a visual warning if filters are "exclude all"
  • Use -filename* as the default new filter to avoid having exclude all as the default
  • Updated all translations, thanks all translators
View originalPermalink
How v2.3.0.109_canary_2026-08-14 went

v2.3.1.0_beta_2026-07-28

Pre-release
Added 10
  • Add secure-datafolder command to ConfigureTool to force correct permissions on the data folder
  • Add sync copy mode that simply copies files from source to destination with options for --sync-then-delete and --sync-remote-state configuration
  • Support remote sources, snapshots, and multiple destinations in sync jobs
  • Integrate service installation and TLS certificate generation into the Windows installer with checkbox toggles
  • Configure Windows service as delay-start service to avoid startup issues on boot
  • Add live-reporting module that sends current backup progress to a user-specified URL
Changed 3
  • Move insecure-permissions.txt support from the data folder to the installation folder
  • Allow customization of configuration storage for unencrypted backups with options to store none, self, or all configurations with or without secrets
  • Improve handling of Microsoft 365 shared mailboxes with better detection
Removed 1
  • Remove support for preload.json at /usr/local/share/Duplicati/preload.json and C:\ProgramData\Duplicati\preload.json
Security 1
  • Require exact expected permissions on the data folder and refuse to use it if permissions are incorrect, with opt-out options via --allow-insecure-datafolder flag, DUPLICATI__ALLOW_INSECURE_DATAFOLDER environment variable, or insecure-permissions.txt in the installation folder

From Duplicati

This release is a Beta release intended to be used for testing to identify any issues before releasing the next stable version.

Breaking change: Locked-down data folder permissions

This release hardens security around the data folder and is a breaking change for some setups.

Duplicati now requires that the data folder has the exact expected permissions, or it will refuse to use it. Previously, Duplicati would silently lock down the folder if it was not already locked.

To opt out of the permission check, you need to either pass --allow-insecure-datafolder, set the environment variable DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true, or place a file name insecure-permissions.txt in the installation folder.

Note that the previous method of placing insecure-permissions.txt in the data folder is no longer supported.

This change also applies to preload.json, such that it will only be loaded if the folder is trusted, or one of the opt-out methods are activated. Additionally, the previous trusted paths /usr/local/share/Duplicati/preload.json and C:\ProgramData\Duplicati\preload.json are no longer supported as they cannot be guaranteed to be locked down.

A preload.json inside the data folder is still supported, provided the folder passes the permission check.

The ConfigureTool has a new secure-datafolder command that can be used to force the correct permissions on the data folder.

For most users this should not cause any problems, as Duplicati has been locking down the folder already, but if you rely on lax folder permissions the setup needs to change. Some Docker setups may not be able to set the permissions and will need to apply DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true in the image to run without the protections.

Sync copy mode

This release adds a often requested feature that enables simple copying of files from source to destination. Where the regular backups are deduplicated, compressed, encrypted and versioned, the new sync mode will instead simply copy from source to destination.

The copy is currently a one-way sync, where the source is replicated on the destination. Files can be deleted on the destination during sync (use --sync-then-delete), but destination folders will not be deleted.

The option --sync-remote-state is by default set to UseRemoteState which will list the destination and figure out what to upload. The setting UseLocalState uses a local database, similar to how backups work, to keep track of known remote files, and reduce the amount of remote listings done. Finally, the BlindlyUpload setting will just copy everything as-is to the remote.

The sync jobs support remote sources, snapshots, and multiple destinations. If snapshots are enabled, the copy is done from the snapshot, ensuring reliable reads.

Configuration of such a sync job is done the same way as with backup, but using a toggle option in the first step of the UI. Note that backup and sync jobs are not compatible as they use very different storage logic, so it is not possible to change the job mode after creating a job.

CLI mode also supports sync.

Improved Windows installer

This change brings a major update to the Windows installers, which now integrates the ability to run as a service, as well as generate and use TLS (https). The service feature has been present for a while in the WindowsService.exe tool and the TLS certificates were added as part of the Duplicati.CommandLine.ConfigureTool.exe. With this update these things are now integrated into the installer, and exposed as simple checkboxes to toggle the features. Installing the service from a regular user account, will also auto-generate a secure password and configure the TrayIcon to connect to the service (only for the current user).

If you have installed the service manually, do not activate the new checkbox as it only works if there is no pre-existing service. The installer-driven service does not support commandline arguments directly, but instead prefers preload.json files to configure it. The MSI supports the property INSTALL_PRELOAD=true which will cause it to pick up a preload.json file from the same folder the MSI is located in.

The Windows service is now also configured as delay-start service to avoid startup issues on boot.

Live reporting module

This release adds a new live-reporting module that sends the current progress of backups to a user-specified URL. The intention is that this can be used for dashboards that want to show the current progress for backups. By default, the module is not configured and has no impact.

PAR2 parity / error-correction for remote volumes

This release adds a pluggable parity module that produces error-correction data for remote data volumes, so they can be repaired after bit-rot or corruption on the backend, thanks @JamBalaya56562.

To enable this, ensure that par2 is installed on the machine and set --parity-module=par2. Setting this will cause additional .par2 files to be uploaded.

Store configuration with backup

This release revives the store-task-config option and makes it enabled by default for encrypted backups. The backup configuration is stored with the backup data, making it easier to restore a configuration later.

For unencrypted backups, no secrets are stored by default. The behavior can be customized with options to store none, self, or all configurations, with or without secrets. The UI has been updated to allow restoring from the destination config. If multiple configurations are found, the user can select one or more backup configurations to restore.

MS365 subsites and shared mailboxes

This release improves the Microsoft 365 backup support with two additions. Support for backing up SharePoint subsites has been added, making it possible to include sub-sites beneath a site collection in a backup.

The handling of shared mailboxes has also been improved, with better detection and enumeration of shared mailboxes within a tenant.

The license counter now excludes shared mailboxes without a license, and supports top-level filtering of users/sites/groups based on classification.

Full disk backup support (Windows, Linux, MacOS)

This release extends the full disk backup feature to support Linux and MacOS.

The Linux support allows backup and restore of entire disks on Linux, including partition tables. The MacOS support adds basic backup and restore of entire disks, including partition tables.

Like the Office 365 / Google Workspace backup features, this is a proprietary module (source available) that requires a license to use in production.

Full disk backup requires administrative privileges to access the disk directly. Full disk restore requires administrative privileges and requires that the disk is unmounted and not write-protected.

Read-only testing of backends

Backends now support read-only context-aware testing, which allows testing connections safely without risking unintended changes to the storage. The read-only testing is applied when testing a restore destination or a remote source, such that no files are attempted written to the remote storage.

New backends

Added support for Drime Cloud as a new storage backend.

Added a new backend for the Spanish provider Movistar, thanks @redmars27. The backend is marked as "untested" as it can only be used (and tested) by Movistar customers.

Deprecated backends

The previous "SharePoint" and "OneDrive for Business" backends have been marked as deprecated, as Microsoft shut down the API they were calling. The migration step is to use the "SharePoint v2" backend (renamed to just "SharePoint" in this version) which uses the Microsoft Graph API.

FAT32 and NTFS support for full disk backup

Added FAT32 and NTFS file system support for the full disk backup feature, including boot sector parser, table reader, streams, and directory walker. This features makes it more efficient to do full-disk backups.

To enable this feature, add the advanced option --diskimage-filesystem-parsed=true and the backups will attempt to parse the disk, and if it is one of the supported formats, it will only read the relevant sectors.

Remote synchronization improvements

Integrated remote synchronization feature (aka 3-2-1 backups) from a separate module into the Main library for better integration, with improved error handling, progress tracking, and reliability.

Added destination space quota checks to the remote synchronization runner, helping prevent failures due to insufficient destination space. An option to disable quota checks (quota-disable) has also been added for scenarios where quota information is not available or reliable.

Duplicati Storage

This release also includes the Duplicati Storage which is integrated with the Duplicati console. Once a machine is connected to the console it can use the accounts storage allocations with zero configuration required.

SharpAESCrypt v3

Updated the SharpAESCrypt encryption library to support "AES Crypt Stream Format v3", which has a number of improvements over the v2 format. For this release, the default written format remains v2, but we encourage you to set the environment variable DUPLICATI__AES_VERSION=3 to test the new format. Note: if you set this version to 3, the new remote volumes cannot be read by Duplicati versions older than (2.3.0.101).

Support for MacOS ACLs

This release adds support for reading MacOS attributes and ACL strings during backup, and restoring them when permission restores are selected.

Support for Windows Alternate Data Streams

This release implements support for reading and writing alternate data streams (ADS) on Windows. This feature is disabled by default and can be enabled with the advanced option --enable-ads-backup. If ADS content is found in the source, this is restored by default but can be disabled with --disable-ads-restore.

Fixed MSSQL backups

Since 2.1 the MSSQL backups would produce errors if attempting to back up an MSSQL server that was running as the default instance, but would work with a named instance. This release fixes the issue and now handles both default- and named instances.

Improved missing source handling

The default behavior when sources are missing has changed. Previously, a missing source would abort the backup. Now, a missing source will only trigger a warning unless the option --abort-if-source-missing is set. The option --allow-missing-source can still be used to suppress warnings entirely. If no sources are found at all, the backup will still abort.

Relative database paths

Database paths are now stored relative to the data folder by default. This makes it simpler to move the data folder as the paths are not stored in full. Existing backups retain their full paths, but manually updating a database path will make it relative if it is within the data folder.

Updated LibSecret support for KDE

The LibSecret support has been updated to work correctly on KDE Plasma 5+6. The default collection alias is now properly resolved, fixing issues where a new collection named default would be created incorrectly.

Improved source tree

To make it easier to see what data is included, the source tree will now show the content of remote sources, including Microsoft 365 tenants, Google workspace subscriptions and full-disk content.

Improved filter accuracy in the UI

The filter evaluation will now be performed server-side if the filters are not "simple filters". When a non-trivial filter is in the list, the C# code will be asked to evaluate the list and produces the filtered results which are then displayed. This increases the correctness of the displayed filter state because the same code is now used for both display and actual backup operations.

Resolve shortcut entries

The helper entries, like "My Documents" are now shown in all picker situations and resolve to the full path. This makes it possible to use these shortcuts to pick things like log-file location or SSH keyfiles, without having to traverse the full tree to find the locations.

Browse remote destinations

The destination configuration has been updated to include a browse button for finding the remote destination path. Once the connection details are in place, the browse button can be used to navigate the remote file system and select the desired destination folder. This works both for configuring a backup and for picking the restore location.

New welcome page and start

The UI will now show a welcome page showing how to connect to the console with an option to continue without. This can be suppressed with the option --webservice-suppress-welcome-page=true or environment variable DUPLICATI__SUPPRESS_WELCOME_PAGE=true.

If the connection is made from the TrayIcon, the initial dialog asking to set a password is no longer shown, as the intention is to use the TrayIcon to connect. It is still possible to change the password from the Settings page if needed.

Crash dialog

Added a crash dialog window that appears when the application encounters an unhandled exception.

Thanks to contributors

This release is once again a collaboration effort from the Duplicati community. Thanks to the many contributors who reports issues, test new releases, requests features, write documentation, maintain translations, and contribute to the codebase.

View originalPermalink
How v2.3.1.0_beta_2026-07-28 went

v2.3.0.108_canary_2026-07-20

Pre-release
Added 7
  • Support for backing up SharePoint subsites beneath a site collection
  • Information button on the source page showing a summary of content found in the Microsoft 365 tenant
  • Option to perform case-insensitive matching of remote filenames
  • Support for `wipe-encryption` command in the database tool to remove all encrypted fields from a server database
  • Re-introduce `insecure-permissions.txt` file in install folder
  • Option to manually start a console-managed backup
  • Support for `tr` and `ko` languages in the UI
Changed 5
  • Improved detection and enumeration of shared mailboxes within a Microsoft 365 tenant
  • License counter now excludes shared mailboxes without a license and supports top-level filtering of users, sites, and groups based on classification
  • Improved filter parsing logic to handle more edge cases and produce more predictable results
  • Use the application data folder for the control directory filter
  • Unify `--datafolder` option name in configuretool
Fixed 8
  • BackendTester now actually retries failed uploads
  • The `--restore-preallocate-size` option now has an effect
  • Several options declared as Integer that are not integers
  • Broken date-time format strings
  • Secure-datafolder for service permissions
  • Restore-control-files with non-standard options
  • Loading of locale files with hyphenated culture names
  • Error attempting to save a backup with a schedule

From Duplicati

This release is a canary release intended to be used for testing.

If no major faults are found, this release is intended to be the basis of the next beta release.

MS365 subsites and shared mailboxes

This release improves the Microsoft 365 backup support with two additions. Support for backing up SharePoint subsites has been added, making it possible to include sub-sites beneath a site collection in a backup.

The handling of shared mailboxes has also been improved, with better detection and enumeration of shared mailboxes within a tenant.

The license counter now excludes shared mailboxes without a license, and supports top-level filtering of users/sites/groups based on classification.

An extra information button is added to the source page that shows a summary of what content was found in the MS365 tenant.

Case-insensitive remote filename matching

A new option has been added to perform case-insensitive matching of remote filenames. This helps with backends that do not preserve filename casing, and prevents issues where files cannot be found because of case differences.

Improved filter parsing

The filter parsing logic has been improved to handle more edge cases and produce more predictable results when building filter expressions.

Added wipe-encryption to database tool

The database tool now supports a wipe-encryption command that can be used to remove all encrypted fields from a server database. With this command it is possible to get an encrypted database back into a state where it can be opened again. After encrypted fields are wiped, the user can then edit backups and settings to replace the lost data.

Detailed list of changes
  • Make BackendTester actually retry failed uploads, thanks @JamBalaya56562
  • Fix --restore-preallocate-size option having no effect, thanks @JamBalaya56562
  • Re-introduce insecure-permissions.txt file in install folder
  • Use the application data folder for the control directory filter, thanks @JamBalaya56562
  • Fix several options declared as Integer that are not integers, thanks @JamBalaya56562
  • Add case-insensitive remote filename matching, thanks @JamBalaya56562
  • Fix broken date-time format strings, thanks @JamBalaya56562
  • Fix secure-datafolder for service permissions
  • Log errors when user-supplied settings fail to parse, thanks @JamBalaya56562
  • Support MS365 subsites in backup and restore
  • Updated all translations, thanks to all translators
  • Fixed pulling mulitple new languages
  • Improve MS365 shared mailbox handling and item classification
  • Improve filter parsing with regards to embedded path separators
  • Fixed restore-control-files with non-standard options
  • Unify --datafolder option name in configuretool
  • Fail the backend test when verification finds a problem, thanks @JamBalaya56562
  • Use local executable name for configuretool
  • Fix loading of locale files with hyphenated culture names, thanks @JamBalaya56562
UI updates
  • Added option to manually start a console-managed backup
  • Added tr and ko languages to the UI
  • Updated all translations, thanks to all translators
  • Fixed an error attempting to save a backup with a schedule
  • Added button to show MS365 tenant counters
View originalPermalink
How v2.3.0.108_canary_2026-07-20 went

v2.3.0.107_canary_2026-07-13

Pre-release
Added 4
  • Add secure-datafolder command to ConfigureTool to set correct permissions on the data folder
  • Add live reporting module for sending backup progress to a user-specified URL
  • Add pluggable PAR2 parity module system for error-correction of remote volumes
  • Add commandline target URL done action
Changed 6
  • Improve TLS certificate validation and fall back to OS-default certificate validator
  • Lock the server database with a busy timeout to prevent concurrent access issues
  • Improve metadata update handling to better show remote versions
  • Make CLI find search all backup versions by default
  • Use effective dbpath for show-log and delete-db endpoints
  • Report script execution in operation status
Fixed 8
  • Guard the compact operation against race conditions
  • Fix database inconsistency after shared metadata delete
  • Avoid secondary transaction errors after repair failure
  • Delete the incomplete recreate database when the remote is empty
  • Stabilize ZipFallback database cleanup on Windows
  • Reset restore rendezvous barriers per operation
  • Fix test-filters ignoring --source from a parameters file
  • Do not attach stack traces to known-problem path warnings
Removed 1
  • Remove redundant cancel button from restore progress
Security 1
  • Require exact permissions on the data folder and refuse to use it if permissions are incorrect, with opt-out available via --allow-insecure-datafolder flag or environment variable

From Duplicati

This release is a canary release intended to be used for testing.

If no major faults are found, this release is intended to be the basis of the next beta release.

Breaking change: Locked-down data folder permissions

This release hardens security around the data folder and is a breaking change for some setups.

Duplicati now requires that the data folder has the exact expected permissions, or it will refuse to use it. Previously, Duplicati would silently lock down the folder if it was not already locked. The previous insecure-permissions.txt opt-out file is no longer supported.

The only way to opt out of the permission check is to pass --allow-insecure-datafolder or set the environment variable DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true. This setting can be placed in preload.json, but only if that file is in a trusted location (the directory with the binaries, or the path pointed to by DUPLICATI_PRELOAD_SETTINGS). The previous trusted paths /usr/local/share/Duplicati/preload.json and C:\ProgramData\Duplicati\preload.json are no longer supported as they cannot be guaranteed to be locked down.

A preload.json inside the data folder is still supported, provided the folder passes the permission check.

The ConfigureTool has a new secure-datafolder command that can be used to force the correct permissions on the data folder.

For most users this should not cause any problems, as Duplicati has been locking down the folder already, but if you rely on lax folder permissions the setup needs to change. Some Docker setups may not be able to set the permissions and will need to apply DUPLICATI__ALLOW_INSECURE_DATAFOLDER=true in the image to run without the protections.

Feedback requested

We are grateful for any feedback on changes or hints for how we can lessen the impact before the next stable release.

Live reporting module

This release adds a new live-reporting module that sends the current progress of backups to a user-specified URL. The intention is that this can be used for dashboards that want to show the current progress for backups. By default, the module is not configured and has no impact.

The module supports multiple activity targets and includes metadata in the activity report, as well as a server-provided activity URL.

PAR2 parity / error-correction for remote volumes

This release adds a pluggable parity module that produces error-correction data for remote data volumes, so they can be repaired after bit-rot or corruption on the backend, thanks @JamBalaya56562.

A pluggable IParity module system is introduced, mirroring the existing compression/encryption modules. The default Par2Parity implementation shells out to the par2 (par2cmdline) program. If the par2 command is installed this will transparently handle creating and using parity files to guard against flipped bits.

Improved TLS certificate validation

The TLS certificate validation has been improved, and Duplicati now falls back to using the OS-default certificate validator. This should resolve issues with custom certificate chains and improve compatibility with various TLS setups.

Detailed list of changes
  • Locked down data folder permissions and require exact permissions, with opt-out via --allow-insecure-datafolder
  • Added secure-datafolder command to the ConfigureTool
  • Added a live reporting module for sending backup progress to a URL
  • Added pluggable PAR2 parity module for error-correction of remote volumes, thanks @JamBalaya56562
  • Improved TLS certificate validation and fallback to OS-default validator
  • Locked the server database with a busy timeout to prevent concurrent access issues
  • Improved metadata update handling to better show remote versions
  • Guarded the compact operation against race conditions
  • Fixed database inconsistency after shared metadata delete
  • Avoid secondary transaction errors after repair failure, thanks @JamBalaya56562
  • Delete the incomplete recreate database when the remote is empty, thanks @JamBalaya56562
  • Stabilized ZipFallback database cleanup on Windows, thanks @JamBalaya56562
  • Reset restore rendezvous barriers per operation, thanks @JamBalaya56562
  • Fixed test-filters ignoring --source from a parameters file, thanks @JamBalaya56562
  • Removed redundant cancel button from restore progress, thanks @JamBalaya56562
  • Do not attach stack traces to known-problem path warnings, thanks @JamBalaya56562
  • Made CLI find search all backup versions by default, thanks @JamBalaya56562
  • Use effective dbpath for show-log and delete-db endpoints, thanks @JamBalaya56562
  • Reporte script execution in operation status, thanks @JamBalaya56562
  • Added commandline target URL done action, thanks @JamBalaya56562
  • Returned non-zero exit code from server-util run on backup failures, thanks @JamBalaya56562
  • Added DfsrPrivate to default excludes, thanks @JamBalaya56562
  • Escaped Windows commandline percent expansion, thanks @JamBalaya56562
  • Updated SQLitePCLRaw e_sqlite3 library, thanks @JamBalaya56562
  • Stabilized Windows ACL restore test, thanks @JamBalaya56562
  • Updated Swashbuckle to patched OpenApi, thanks @JamBalaya56562
  • Delayed Windows service startup, thanks @JamBalaya56562
  • Validated retention-policy format instead of crashing on missing colon, thanks @TowyTowy
  • Allowed machine-id override to fix mismatched ids for console connection and backup reports
  • Added endpoints for removal of versions and purge-broken files
  • Reported number of zero-length metadata entries
  • Fixed uninstall issue with delay-start service
  • Updated all localizations, thanks to all translators
UI updates
  • Option to start a managed backup from the home page.
  • Support for deleting versions from the actions menu.
  • Support for invoking purge-broken-files from the actions menu.
  • Moved the database compact action from the main menu to the database page.
  • Resolved websocket reconnect race conditions and timer mismatch
  • Aligned the disconnected dialog countdown with the actual reconnect delay (5s)
  • Renamed the "System settings" panel heading to "Server settings" for consistency with the tab name
  • Fixed a search issue with advanced options
  • Resolved the schedule page next-time off-by-one day issue
  • Updated localizations, thansk to all translators
View originalPermalink
How v2.3.0.107_canary_2026-07-13 went

v2.3.0.4_stable_2026-07-09

Added 4
  • Add configurable authentication timeout to the Duplicati backend
  • Allow disable default secret provider
  • Add server-side filter evaluation
  • Added ability to browse for a destination path in ngclient
Changed 3
  • Improved secret provider loader and license checker for greater flexibility
  • Updated libsecret integration to work better with KDE
  • Updated rclone in Docker images
Fixed 9
  • Fixed memory leak that could occur when backing up the macOS Photos library
  • Fixed startup race condition in the Agent that could cause instability on launch
  • Made the backup process more robust against metadata errors to prevent crash
  • Fixed retry of HTTP messages for transient failures
  • Fixed handling of MSSQL default instances
  • Corrected option types for the S3 lock mode
Security 4
  • Improved handling of filtered paths so that paths excluded by filters are no longer accessed
  • Filter sensitive paths out of reported log data
  • Use default OS certificate validator for reports
  • Block path traversal in recovery tool

From Duplicati

About this release

This release patches version 2.3.0.3 with fixes for a number of issues that were discovered after the release. The main focus of this release is stability and security hardening, along with a few backend and configuration improvements.

Security and Privacy

We improved handling of filtered paths so that paths excluded by filters are no longer accessed, and sensitive paths are now filtered out of reported log data. For reports we now rely on the OS default certificate validator.

Stability Fixes

We fixed a memory leak that could occur when backing up the macOS Photos library, and fixed a startup race condition in the Agent that could cause instability on launch. We also made the backup process more robust against metadata errors, preventing a crash that could otherwise abort the backup.

Backend and Configuration Improvements

The Duplicati backend now has a configurable authentication timeout, and the HTTP message sending logic now retries transient failures correctly. We also fixed the handling of MSSQL default instances, and corrected the option types for the S3 lock mode so the correct values are displayed.

Secret Provider and Licensing

It is now possible to disable the default secret provider, and the secret provider loader has been improved together with the license checker for greater flexibility. The libsecret integration was updated to work better with KDE, and we now prevent creating a useless encryption key in certain scenarios.

Other Changes

This release adds server-side filter evaluation, fixes a few minor issues with remote sources, updates rclone in the Docker images, and corrects some incorrect help text.

Detailed list of changes:
  • Allow disable default secret provider
  • Block path traversal in recovery tool
  • Add server-side filter eval
  • Improve license flexibility
  • Add an auth timeout to the Duplicati backend
  • Avoid crash on metadata error
  • Filter paths in reported log data
  • Don't access filtered path
  • Fixed retry of HTTP messages
  • Fix incorrect option types for lock mode
  • Fix MSSQL default instance handling
  • Update libsecret for KDE
  • Improve secret provider and license checker
  • Prevent creating a useless key
  • Fix incorrect help text
  • Fix Agent startup race
  • Fix MacOS Photos memory usage
  • Update rclone in Docker images
  • Fix minor issues with remote sources
  • Use default OS certificate validator
Updates to ngclient
  • Prevent frontend from requesting lock repair override
  • Added ability to browse for a destination path.
  • Added support for browsing MS365 and Google Workspace, so filters can be applied while content is visible.
  • Added support for server-side filters in treeview.
  • Showing shortcuts in pickers as we can now resolve them.
  • Added a debouncer to filter calls.
  • Added error indicator to tree view.
  • Clean up target disk layout.
  • Apply extended search only if we are restoring from a destination that needs it.
  • Include server-only options, if any.
  • Better Google Workspace error messages.
  • Fixes to allow listing full disks on Windows.
  • Fixed issue with evaluating globbing.
View originalPermalink
How v2.3.0.4_stable_2026-07-09 went

v2.3.0.106_canary_2026-07-03

Pre-release
Added 10
  • Sync copy mode that enables simple one-way copying of files from source to destination without deduplication, compression, encryption or versioning
  • Option --sync-then-delete to delete files on the destination during sync
  • Option --sync-remote-state with settings UseRemoteState, UseLocalState, and BlindlyUpload to control how destination state is tracked
  • Support for remote sources, snapshots, and multiple destinations in sync jobs
  • UI toggle option to configure sync jobs in the first step, with sync and backup jobs being incompatible modes
  • CLI mode support for sync
Changed 5
  • Update localizations
  • Show multiple destinations on overview
  • Updated ShipUI and Angular
  • Improved the secret provider loader and license checker
  • Bumped SQLite and StreamJson dependencies
Fixed 6
  • MacOS Photos memory usage
  • Agent startup race condition
  • Incorrect help text for remote locks
  • Issue with forcing lock refresh
  • Prevent creating a useless encryption key on startup
  • Warn when VCRedist is missing on VSS failure

From Duplicati

This release is a canary release intended to be used for testing.

Sync copy mode

This release adds a often requested feature that enables simple copying of files from source to destination. Where the regular backups are deduplicated, compressed, encrypted and versioned, the new sync mode will instead simply copy from source to destination.

The copy is currently a one-way sync, where the source is replicated on the destination. Files can be deleted on the destination during sync (use --sync-then-delete), but destination folders will not be deleted.

The option --sync-remote-state is by default be set to UseRemoteState which will list the destination and figure out what to upload. The setting UseLocalState uses a local database, similar to how backups work, to keep track of known remote files, and reduce the amount of remote listings done. Finally, the BlindlyUpload setting will just copy everything as-is to the remote.

The sync jobs support remote sources, snapshots, and multiple destinations. If snapshots are enabled, the copy is done from the snapshot, ensuring reliable reads.

Configuration of such a sync job is done the same way as with backup, but using a toggle option in the first step of the UI. Note that backup and sync jobs are not compatible as they use very different storage logic, so it is not possible to change the job mode after creating a job.

CLI mode also supports sync.

Multi version restore

A new option, --restore-all-files can be used to restore files matching a filter from multiple versions. This can be used to select specific versions and then restore a set of files in all versions. This option does not currently have a UI component.

Detailed list of changes
  • Fix MacOS Photos memory usage.
  • Fix Agent startup race condition.
  • Warn when VCRedist is missing on VSS failure.
  • Update localizations.
  • Fix incorrect help text for remote locks.
  • Added a restore callback module.
  • Added support for restoring files across multiple versions.
  • Added a sync command to the Controller and CLI.
  • Prevent creating a useless encryption key on startup.
  • Added an option to control OCSP/CRL failure handling.
  • Improved the secret provider loader and license checker.
  • Bumped SQLite and StreamJson dependencies.
UI changes
  • Added support for editing sync jobs
  • Show multiple destinations on overview
  • Updated localizations
  • Fixed issue with forcing lock refresh
  • Updated ShipUI and Angular
View originalPermalink
How v2.3.0.106_canary_2026-07-03 went

v2.3.0.105_canary_2026-06-24

Pre-release
Added 9
  • Store backup configuration with backup data, enabled by default for encrypted backups
  • Support for reading and restoring MacOS attributes and ACL strings during backup and restore
  • Support for reading and writing Windows Alternate Data Streams with the advanced option --enable-ads-backup
  • Searching in metadata for remote sources
  • Auth timeout to Duplicati backend
  • Unified interface for remote browsing with browse button for destination configuration
Changed 6
  • Missing sources now trigger a warning instead of aborting the backup by default
  • Database paths are now stored relative to the data folder by default
  • License usage calculation to allow filtering items before counting towards limits
  • Source tree to show content of remote sources including Microsoft 365 tenants and Google Workspace subscriptions
  • Helper entries like My Documents now resolve to full paths in all picker situations
  • Updated rclone in Docker images to use recent releases
Fixed 5
  • MSSQL backups for default instance configuration
  • Incorrect option types for lock mode now showing as enums in the UI
  • Retry of HTTP messages
  • Case-insensitive search and exposed the flag in the API
  • Case-change issue with USN on Windows

From Duplicati

2026-06-24 - 2.3.0.105_canary_2026-06-24

This release is a canary release intended to be used for testing.

Store configuration with backup

This release revives the store-task-config option and makes it enabled by default for encrypted backups. The backup configuration is stored with the backup data, making it easier to restore a configuration later.

For unencrypted backups, no secrets are stored by default. The behavior can be customized with options to store none, self, or all configurations, with or without secrets. The UI has been updated to allow restoring from the destination config. If multiple configurations are found, the user can select one or more backup configurations to restore.

Support for MacOS ACLs

This release adds support for reading MacOS attributes and ACL strings during backup, and restoring them when permission restores are selected.

Support for Windows Alternate Data Streams

This release implements support for reading and writing alternate data streams (ADS) on Windows. This feature is disabled by default and can be enabled with the advanced option --enable-ads-backup. If ADS content is found in the source, this is restored by default but can be disabled with --disable-ads-restore.

Fixed MSSQL backups

Since 2.1 the MSSQL backups would produce errors if attempting to back up an MSSQL server that was running as the default instance, but would work with a named instance. This release fixes the issue and now handles both default- and named instances.

Improved missing source handling

The default behavior when sources are missing has changed. Previously, a missing source would abort the backup. Now, a missing source will only trigger a warning unless the option --abort-if-source-missing is set. The option --allow-missing-source can still be used to suppress warnings entirely. If no sources are found at all, the backup will still abort.

Relative database paths

Database paths are now stored relative to the data folder by default. This makes it simpler to move the data folder as the paths are not stored in full. Existing backups retain their full paths, but manually updating a database path will make it relative if it is within the data folder.

Updated LibSecret support for KDE

The LibSecret support has been updated to work correctly on KDE Plasma 5+6. The default collection alias is now properly resolved, fixing issues where a new collection named default would be created incorrectly.

License flexibility in MS365 and Google Workspace

The way license usage is calculated has been updated. Enumeration is now applied without imposing limitations, but actually reading the items is limited. This allows filtering unwanted items before they count towards usage.

Improved source tree

To make it easier to see what data is included, the source tree will now show the content of remote sources, including Microsoft 365 tenants, Google workspace subscriptions and full-disk content.

Easier filter configuration

Expanding the content will show item inclusion state. Clicking items will toggle them, similar to how regular file select works. This allows selective backup of remote data, such as picking which MS365 mailboxes to include.

For the full-disk selection is now possible to select an entire disk as the source, or select the individual partitions.

Server-side filters

Additionally, the filter evaluation will now be performed server-side if the filters are not "simple filters". When a non-trivial filter is in the list, the C# code will be asked to evaluate the list and produces the filtered results which are then displayed. This increases the correctness of the displayed filter state because the same code is now used for both display and actual backup operations.

Resolve helper entries

The helper entries, like "My Documents" are now show in all picker situations and resolve to the full path. This makes it possible to use these shortcuts to pick things like log-file location or SSH keyfiles, without having to traverse the full tree to find the locations.

Browse remote destinations

The destination configuration has been updated to include a browse button for finding the remote destination path. Once the connection details are in place, the browse button can be used to navigate the remote file system and select the desired destination folder. This works both for configuring a backup and for picking the restore location.

Detailed list of changes
  • Updated LibSecret support to work correctly on KDE Plasma 6
  • Improved missing source handling, missing sources now warn instead of abort by default
  • Fixed MSSQL default instance handling
  • Fixed incorrect option types for lock mode, now showing as enums in the UI
  • Fixed retry of HTTP messages
  • Fixed ordering issue where filtered paths were accessed before filtering
  • Use relative database paths by default
  • Updated rclone in Docker images to use recent releases
  • Store configuration with backup with flexible options for encrypted and unencrypted backups
  • Added support for MacOS ACLs
  • Added searching in metadata for remote sources
  • Filter paths in reported log data to avoid leaking sensitive information
  • Prevent crash on metadata error during restore
  • Fixed case-insensitive search and exposed the flag in the API
  • Implemented support for ADS on Windows
  • Added auth timeout to Duplicati backend
  • Handle script modified filters correctly
  • Fix minor issues with remote sources
  • Improve license flexibility, allowing filtering before usage limits
  • Added unified interface for remote browsing
  • Always install WindowsService.exe in MSI
  • Add server-side filter evaluation
  • Block path traversal in recovery tool
  • Allow disabling default secret provider
  • Fixed case-change issue with USN on Windows
Updates to ngclient
New Features
  • Added support for restoring from remote config.
  • Added ability to browse for a destination path.
  • Added support for the new destination list API (auto-toggled if server supports it).
  • Added support for browsing MS365 and Google Workspace, so filters can be applied while content is visible.
  • Added support for server-side filters in treeview.
  • Showing shortcuts in pickers as we can now resolve them.
  • Added a debouncer to filter calls.
  • Added error indicator to tree view.
Improvements
  • Clean up target disk layout.
  • Apply extended search only if we are restoring from a destination that needs it.
  • Include server-only options, if any.
  • Better Google Workspace error messages.
  • Fixes to allow listing full disks on Windows.
  • Fixed issue with evaluating globbing.
View originalPermalink
How v2.3.0.105_canary_2026-06-24 went

v2.3.0.3_stable_2026-06-10

Added 4
  • Added failsafe checks to ensure synthetic filelists are always valid
  • Made Duplicati storage backend publicly available for backup destinations
  • Added --exclude-non-local-files option to exclude files stored in cloud services
  • Added support for extended Win32 file attributes in backups
Changed 4
  • Improved error messages with additional guidance on how to resolve issues
  • Renamed Office 365 branding to Microsoft 365
  • Persist the used compression module in backup metadata
  • Optimized ngclient query flow to use websockets instead of polling
Fixed 11
  • Optimized synthetic filelist creation process to improve performance and prevent dangling metadata entries
  • Fixed remote file locking issue that could cause database locking problems
  • Fixed S3 lock mode configuration to show correct values
  • Fixed SMB backend issue where files could be incorrectly treated as folders
  • Fixed timeout issue in OneDrive backend where slow transfers could trigger unexpected timeout
  • Fixed warnings when backing up macOS Photos folder
Deprecated 1
  • Deprecated OneDrive for Business and SharePoint backends in favor of Microsoft Graph backend

From Duplicati

About this release

This release patches version 2.3.0.1 with fixes for a few issues that were discovered after the release. This is the same as the 2.3.0.2 release but with a few additional fixes that were missed by the 2.3.0.2 release.

Reliability Fixes

This release optimizes the synthetic filelist creation process to improve performance significantly. Additionally, there are a few added failsafe checks to ensure syntehtic filelists are always valid.

We also fixed an issue with remote-file locking that could (ironically) cause database locking issues in some cases. And we fixed the S3 lock mode configuration to show the correct values.

Backend Fixes and Improvements

We fixed an issue where the SMB backend could incorrectly treat files as folders giving warnings when attempting to enumerate them. We also fixed a timeout issue for OneDrive where slow transfers could trigger an unexpected timeout.

The OneDrive for Business and SharePoint backends have been deprecated in favor of the Microsoft Graph backend, as the older backends relied on an API that is no longer supported.

We also made the Duplicati storage backend publicly available, so you can now use Duplicati storage for your backups. Duplicati storage is integrated with the Duplicati Console, so there is zero storage configuration needed on the client.

Platform and Restore Improvements

This release also features a new option --exclude-non-local-files that can be used to exclude files that are stored in the cloud, such as OneDrive, Dropbox, etc.

We also fixed an issue causing warnings when doing backups of the MacOS Photos folder, and improved some error messages to include more guidance on how to resolve them.

Detailed list of changes:
  • Renamed Office 365 branding to Microsoft 365
  • Optimized synthetic filelist creation to prevent dangling metadata entries
  • Improved Docker image build configuration
  • Persist the used compression module in backup metadata
  • Updated usage reporter integration
  • Improved websocket handling for remote management connections
  • Fixed Filen backend CI and authentication issues
  • Added failsafe checks for synthetic filelist metadata
  • Improved restore messages with additional result details
  • Deprecated older OneDrive and SharePoint backends
  • Fixed folders incorrectly showing as files in the filesystem API
  • Added defensive handling for macOS Photos library timestamps
  • Updated MEGA S4 endpoints for S3 backend
  • Improved snapshot error messages with permission guidance
  • Fixed timeout handling in OneDrive backend
  • Updated Duplicati backend with improved timeout options
  • Removed explicit defaults from new backup template
  • Cleaned up remote controller registration state handling
  • Fixed SMB backend issue where files could be treated as folders
  • Fixed remote file locking on Windows
  • Fixed S3 lock mode configuration
  • Added support for extended Win32 file attributes in backups
  • Update Avalonia to avoid DirectX dependency
  • Improved handling of expired links
  • Fix incorrect quota size reported
  • Fixed version based search for restored
  • Added guard when deleting old versions
  • Log 500 errors to system log or local local
  • Detect if locking is used when recreating database
  • Support the do-not-track environment variable
  • Guard against secret provider init failure
Updates to ngclient
  • Added toggle to show advanced option names instead of descriptions
  • Added confirmation popup before exporting configuration without encryption
  • Now showing remote lock results on log page
  • Fixed websocket not connecting on welcome page
  • Added a welcome page for simpler console connections
  • Removed attributes filter options on source page, in favor of using advanced options
  • Prevent iteration of non-folder paths
  • Enable selecting hidden items
  • Added path resolving on the "dynamic paths", such as "My documents"
  • Fixed compression option not being visible
  • Added support for showing backends as deprecated or untested
  • Fixed an issue where file size would not be shown in the file tree
  • Added an option to retry loading a backup list
  • Show "last backup" with the same date in both detail and grid view
  • Show actual scheduled time for backups
  • Fixed an issue with using stored destinations which would fail to create folders
  • Fixed an issue with importing backups where the schedule edits would be ignored
  • Fixed an issue where the date for a scheduled backup would be off-by-one when edited
  • Optimized query flow to use websockets instead of polling/fetching
View originalPermalink
How v2.3.0.3_stable_2026-06-10 went

v2.3.0.2_stable_2026-06-10

Added 5
  • Failsafe checks to ensure synthetic filelists are always valid
  • Duplicati storage backend now publicly available for use in backups with zero storage configuration needed on the client
  • New option --exclude-non-local-files to exclude files stored in the cloud such as OneDrive and Dropbox
  • Defensive handling for macOS Photos library timestamps
  • Support for extended Win32 file attributes in backups
Changed 7
  • Optimized synthetic filelist creation process to improve performance and prevent dangling metadata entries
  • Renamed Office 365 branding to Microsoft 365
  • Persist the used compression module in backup metadata
  • Improved error messages to include more guidance on how to resolve them
  • Improved websocket handling for remote management connections
  • Improved snapshot error messages with permission guidance
  • Updated MEGA S4 endpoints for S3 backend
Fixed 7
  • Remote-file locking issue that could cause database locking in some cases
  • S3 lock mode configuration to show the correct values
  • SMB backend incorrectly treating files as folders and giving warnings when attempting to enumerate them
  • OneDrive timeout issue where slow transfers could trigger an unexpected timeout
  • Warnings when doing backups of the MacOS Photos folder
  • Filen backend CI and authentication issues
  • Folders incorrectly showing as files in the filesystem API
Deprecated 1
  • OneDrive for Business and SharePoint backends in favor of the Microsoft Graph backend

From Duplicati

About this release

This release patches version 2.3.0.1 with fixes for a few issues that were discovered after the release.

Reliability Fixes

This release optimizes the synthetic filelist creation process to improve performance significantly. Additionally, there are a few added failsafe checks to ensure syntehtic filelists are always valid.

We also fixed an issue with remote-file locking that could (ironically) cause database locking issues in some cases. And we fixed the S3 lock mode configuration to show the correct values.

Backend Fixes and Improvements

We fixed an issue where the SMB backend could incorrectly treat files as folders giving warnings when attempting to enumerate them. We also fixed a timeout issue for OneDrive where slow transfers could trigger an unexpected timeout.

The OneDrive for Business and SharePoint backends have been deprecated in favor of the Microsoft Graph backend, as the older backends relied on an API that is no longer supported.

We also made the Duplicati storage backend publicly available, so you can now use Duplicati storage for your backups. Duplicati storage is integrated with the Duplicati Console, so there is zero storage configuration needed on the client.

Platform and Restore Improvements

This release also features a new option --exclude-non-local-files that can be used to exclude files that are stored in the cloud, such as OneDrive, Dropbox, etc.

We also fixed an issue causing warnings when doing backups of the MacOS Photos folder, and improved some error messages to include more guidance on how to resolve them.

Detailed list of changes:
  • Renamed Office 365 branding to Microsoft 365
  • Optimized synthetic filelist creation to prevent dangling metadata entries
  • Improved Docker image build configuration
  • Persist the used compression module in backup metadata
  • Updated usage reporter integration
  • Improved websocket handling for remote management connections
  • Fixed Filen backend CI and authentication issues
  • Added failsafe checks for synthetic filelist metadata
  • Improved restore messages with additional result details
  • Deprecated older OneDrive and SharePoint backends
  • Fixed folders incorrectly showing as files in the filesystem API
  • Added defensive handling for macOS Photos library timestamps
  • Updated MEGA S4 endpoints for S3 backend
  • Improved snapshot error messages with permission guidance
  • Fixed timeout handling in OneDrive backend
  • Updated Duplicati backend with improved timeout options
  • Removed explicit defaults from new backup template
  • Cleaned up remote controller registration state handling
  • Fixed SMB backend issue where files could be treated as folders
  • Fixed remote file locking on Windows
  • Fixed S3 lock mode configuration
  • Added support for extended Win32 file attributes in backups
Updates to ngclient
  • Added toggle to show advanced option names instead of descriptions
  • Added confirmation popup before exporting configuration without encryption
  • Now showing remote lock results on log page
  • Fixed websocket not connecting on welcome page
  • Added a welcome page for simpler console connections
  • Removed attributes filter options on source page, in favor of using advanced options
  • Prevent iteration of non-folder paths
  • Enable selecting hidden items
  • Added path resolving on the "dynamic paths", such as "My documents"
  • Fixed compression option not being visible
  • Added support for showing backends as deprecated or untested
  • Fixed an issue where file size would not be shown in the file tree
  • Added an option to retry loading a backup list
  • Show "last backup" with the same date in both detail and grid view
  • Show actual scheduled time for backups
  • Fixed an issue with using stored destinations which would fail to create folders
  • Fixed an issue with importing backups where the schedule edits would be ignored
  • Fixed an issue where the date for a scheduled backup would be off-by-one when edited
  • Optimized query flow to use websockets instead of polling/fetching
View originalPermalink
How v2.3.0.2_stable_2026-06-10 went

v2.3.0.104_canary_2026-06-04

Pre-release
Added 13
  • Windows installer now integrates ability to run as a service with simple checkbox toggle
  • Windows installer now integrates TLS (https) certificate generation and usage with simple checkbox toggle
  • Service installation from regular user account auto-generates secure password and configures TrayIcon connection
  • Extended NTFS full-disk backup support on Windows with advanced option --diskimage-filesystem-parsed=true
  • New AutoTune tool (Duplicati.CommandLine.AutoTuneTool / duplicati-autotune) to evaluate and optimize performance-related settings
  • Backends now support read-only context-aware testing for safe connection testing without risking unintended changes
Changed 1
  • FS parsing made experimental
Fixed 4
  • S3 lock mode values now display correctly
  • Remote file locking on Windows
  • SMB source listing misclassifying directories as files
  • Websocket connection on ngclient welcome page
Removed 1
  • Attributes filter options on ngclient source page in favor of using advanced options

From Duplicati

This release is a canary release intended to be used for testing.

Improved Windows installer

This change brings a major update to the Windows installers, which now integrates the ability to run as a service, as well as generate and use TLS (https). The service feature has been present for a while in the WindowsService.exe tool and the TLS certificates were added as part of the Duplicati.CommandLine.ConfigureTool.exe. With this update these things are now integrated into the installer, and exposed as simple checkboxes to toggle the features. Installing the service from a regular user account, will also auto-generate a secure password and configure the TrayIcon to connect to the service (only for the current user).

If you have installed the service manually, do not activate the new checkbox as it only works if there is no pre-existing service.

NTFS full-disk backup

This release extends the full disk backup feature to include NTFS support on Windows. With this support it is more efficient to make backups of NTFS formatted disks. To enable this feature, add the advanced option --diskimage-filesystem-parsed=true and the backups will attempt to parse the disk, and if it is one of the supported formats, it will only read the relevant sectors.

New Auto-Tune tool

This release also introduces a new AutoTune tool (Duplicati.CommandLine.AutoTuneTool / duplicati-autotune), designed to help evaluate and optimize performance-related settings automatically based on the system.

Read-only testing of backends

Backends now support read-only context-aware testing, which allows testing connections safely without risking unintended changes to the storage. The read-only testing is applied when testing a restore destination or a remote source, such that no files are attempted written to the remote storage.

New welcome page and start

The UI will now show a welcome page showing how to connect to the console with an option to continue without. This can be suppressed with the option --webservice-suppress-welcome-page=true or environment variable DUPLICATI__SUPPRESS_WELCOME_PAGE=true.

If the connection is made from the TrayIcon, the initial dialog asking to set a password is no longer shown, as the intention is to use the TrayIcon to connect. It is still possible to change the password from the Settings page if needed.

Detailed list of changes
  • Added handling for extended Win32 file attributes and option to ignore non-local files, such as OneDrive and Dropbox files
  • Fixed showing correct S3 lock mode values
  • Added full disk NTFS support
  • Added AutoTune tool
  • Added read-only testing to backends, thanks @realtek2017
  • Made FS parsing experimental
  • Fixed remote file locking on Windows
  • Fixed SMB source listing misclassifying directories as files, thanks @realtek2017
  • Improved MSI installer package for Service
  • Simplified console handling
  • Cleaned up state after registering
  • Removed explicit defaults in backup config
  • Hardened MSI installer
Changes in ngclient
  • Added toggle to show advanced option names instead of descriptions
  • Added confirmation popup before exporting configuration without encryption
  • Now showing remote lock results on log page
  • Toggling read-only testing of backends based on context
  • Fixed websocket not connecting on welcome page
  • Added a welcome page for simpler console connections
  • Removed attributes filter options on source page, in favor of using advanced options
View originalPermalink
How v2.3.0.104_canary_2026-06-04 went

v2.3.0.103_canary_2026-05-22

Pre-release
Added 8
  • Duplicati Storage backend for zero-configuration storage setup
  • Experimental setting to run backup, restore, and verify operations in an isolated sub-process
  • Support for marking backends as deprecated or untested
  • Movistar storage backend
  • Failsafe when creating synthetic filelists
  • Check code to ensure synthetic filelists are generated with required fields
  • Path resolving on dynamic paths such as My documents in ngclient
  • Option to retry loading a backup list in ngclient
Changed 3
  • Internal controller to only expose async methods
  • Mega S4 endpoint list
  • Duplicati Backend to use the new API
Fixed 8
  • Issue with Filen.io renaming
  • Restore message when no files are restored to reflect if existing files are found
  • Some files showing as folders and missing size information
  • Parsing MacOS timestamps from year 0000
  • Issue where option settings could potentially be sticky across operations
  • 100 second timeout with OneDrive and SharePoint v2
  • Compression option not being visible in ngclient
  • File size not being shown in file tree in ngclient
Deprecated 1
  • od4b and mssp backends as the API is no longer working

From Duplicati

This release is a canary release intended to be used for testing.

Changes in this version

This release marks the soft-launch of the Duplicati Storage service, giving a zero-configuration setup of storage. The Duplicati Storage backend works like any other backend, but there is no configuration to set up. Once the client is connected to the console, it can use the Duplicati Storage backend.

The service is currently in soft-launch mode and anyone interrested can contact Duplicati support to have a storage trial activated on their account.

In this release there is an experimental setting option that makes the actual operations (backup, restore, verify, etc.) run in an isolated sub-process. When this setting is enabled, the Duplicati server will spawn a new process for each operation, and the operation will run in that process. This means that if the process crashes or hangs, the Duplicati server will not be affected. It also allows the Duplicati server, and by extension the user, to force-kill a stuck process. While this feature is tested, it is not enabled by default as we are aware that there might be subtle issues and would like feedback on how the feature works in real-world scenarios.

The previous "SharePoint" and "OneDrive for Business" backends have been marked as deprecated, as Microsoft shut down the API they were calling. The migration step is to use the "SharePoint v2" backend (renamed to just "SharePoint" in this version) which uses the Microsoft Graph API.

This version also adds a new backend for the Spanish proivder Movistar, thanks to @redmars27. The backend is marked as "untested" as it can only be used (and tested) by Movistar customers.

This update also adds some more guards to the synthetic filelist generation update from 2.3.0.102, and a fix for OneDrive timeouts.

Detailed list of changes
  • Fixed an issue with Filen.io renaming
  • Added a failsafe when creating synthetic filelists
  • Added check code to ensure synthetic filelists are generated with required fields
  • Fixed restore message when no files are restored to reflect if existing files are found
  • Added support for marking backends as deprecated or untested
  • Deprecated od4b and mssp backends as the API is no longer working
  • Fixed some files showing as folders and missing size information
  • Hide the --unittest-mode flag from supported options
  • Fix parsing MacOS timestamps that are from year 0000
  • Updated internal controller to only expose async methods
  • Updated Mega S4 endpoint list
  • Fixed an issue where option settings could potentially be sticky across operations
  • Updated warning logic on restore if no files were restored
  • Fix a 100s timeout with OneDrive and SharePoint v2
  • Updated the Duplicati Backend to use the new API
  • Added support for running backup and restore in an isolated sub-process
  • Added MoviStar storage backend, thanks @redmars27
Changes in ngclient
  • Prevent iteration of non-folder paths
  • Enable selecting hidden items
  • Added path resolving on the "dynamic paths", such as "My documents"
  • Fixed compression option not being visible
  • Added support for showing backends as deprecated or untested
  • Fixed an issue where file size would not be shown in the file tree
  • Added an option to retry loading a backup list
View originalPermalink
How v2.3.0.103_canary_2026-05-22 went
View all

Discussion

If you publish Duplicati, you can claim this product by proving you administer its repository.