News

Duplicati canary release: Hyper-V and MSSQL as source providers, restore improvements, and storage fixes

Hyper-V machines and MSSQL databases now show up in backups under their own names instead of raw file paths, and can be restored straight back to where they came from. The new Duplicati canary also brings correct restores of symbolic links and junctions, a fix for Windows snapshot sets that stayed stuck after a failure, and a round of fixes across Azure, Google Cloud, Storj, Jottacloud and SMB.

A new Duplicati canary is out, and the headline change is how Hyper-V virtual machines and MSSQL databases appear in a backup. Alongside that, restores can take advanced options, symbolic links and junctions restore correctly, Windows snapshot failures no longer poison later snapshots, and a long list of storage providers got fixes.

Canary builds are for testing. They carry the newest changes before they reach the beta and stable channels, so run this one on a test machine or a non-critical backup set first. Canary builds are available on the download page.

Hyper-V and MSSQL are now source providers

Until now, adding a Hyper-V machine or an MSSQL database to a backup meant that the %HYPERV% and %MSSQL% source paths were swapped for the real paths of the VM and database files. The backup held those raw paths, and at restore time you had to work out which files belonged to which machine or database.

Both modules are now source providers. Each machine or database appears as its own virtual folder, and the machine or database name is stored as metadata. The restore view groups the files under those names instead of GUIDs, and the source picker in the UI shows the same tree when you set up the backup.

This also makes restoring to the original location possible. The destination is read from the metadata, so you no longer have to find the right folder yourself. Before the restore starts, a check reports files that are in use, such as a running virtual machine or an attached database, so you can stop them first instead of discovering the problem halfway through. With the new --register-restored-items option, a restored Hyper-V machine is registered with Hyper-V once the restore completes.

Restore to original location and --register-restored-items are only available on Windows.

Advanced options for a single restore

A restore started from the UI can now be given advanced options that are not part of the backup configuration. That means you can adjust a setting for one restore, such as a timeout or a provider-specific option, without editing and re-saving the backup itself.

Symbolic links and junctions restore correctly

Several long-standing problems with restoring symbolic links and directory junctions are fixed in this release:

  • A directory junction is now recorded as a junction and restored as one on Windows, instead of as a directory symbolic link. Backups made before this release have no kind recorded and restore as they did before.

  • Restoring a symbolic link no longer removes a folder with files in it, or a file when --overwrite is not set, that has taken the link's place since the backup was made. The link is skipped with a warning instead.

  • A link to a folder is now created only after the files below it are restored. This removes a race that produced "Could not find a part of the path" warnings and lost timestamps.

  • Folders that a partial restore has to create for the files it restores are no longer reported as warnings.

  • Restoring multiple paths with no common root on Windows no longer fails with "index out of bounds", and restoring from a UNC path to a local path works again.

Windows snapshots, stuck sources and GnuPG

Windows snapshot cleanup. A snapshot that failed after its snapshot set was started left the set in progress. Every later snapshot then failed with VSS_E_SNAPSHOT_SET_IN_PROGRESS (0x80042316) until the process was restarted, and other VSS applications on the machine saw the same error. The snapshot manager is now disposed when setup fails, and a started set is aborted.

Stopping a backup on a stuck source. Continuing the work from the previous canary, "Stop now" now also returns when a source file open, size read or metadata read is stuck, for example on a network share that has stopped answering.

GnuPG on large volumes. GPG only finishes a volume after reading all of it, which took longer than the fixed five-second limit on large volumes and busy disks. The backup then failed with "program won't flush output" and could crash the process afterwards. The encryption now waits for GPG to finish without a time limit and reports a failed copy to the caller.

Storage provider fixes

  • Azure Blob Storage uploads are now sent in blocks instead of a single request, so a volume that takes longer than the network timeout to send no longer fails. The block size defaults to 10 MiB and can be lowered with --azure-upload-block-size on slow connections.

  • Google Cloud Storage uploads now include a CRC32 checksum, so a transfer error is less likely to leave a defective file in the bucket.

  • Google services: resumable uploads no longer fail when the server answers with a 308 status.

  • Storj: uploads to a bucket with Object Lock no longer fail because of the default expiry time.

  • Jottacloud: parallel downloads no longer end with "Stream position mismatch after download".

  • SMB: a new --enable-smb311 option connects to servers that require SMB 3.1.1. It is off by default because the underlying library marks it experimental. SMBLibrary was updated to 1.5.8.1.

  • HashiCorp Vault: secrets that arrive as JSON elements are now read, which fixes "The following keys were not found".

Faster, quieter Microsoft 365 enumeration

Enumerating mailboxes no longer requests the message body, which made listings large and slow. Emails are now enumerated through the delta endpoint, which has stable pagination and avoids the repeated enumeration behind long delays and duplicate-item warnings.

The warning noise is also reduced: locked sites are skipped, OneNote and ToDo access is only warned about once, inherited permissions are no longer requested for items without explicit permissions, transient network errors are retried, and heavy throttling is handled with longer waits. A new --office365-exclude-system-libraries option leaves out the system libraries in sites and groups.

Console remote access on NAS devices, remote-source backups and sync logs

Remote access on Synology and QNAP. On these devices, Duplicati authentication is tied to the system login, so the relayed requests used by the Duplicati Console were rejected because Duplicati itself is not a NAS user. A local forwarding key, generated at startup, now lets Duplicati authenticate its own requests, and remote access from the Console works on both platforms.

Backups from remote sources. Backups that read from a remote source such as SMB or S3 now return rooted paths in the listing, store metadata in the virtual root so the UI knows the data cannot be restored directly to the source, and work with USN change journals active.

Sync operation logs. Sync operations now write their results into the sync database, so the outcome of each run shows up in the job log, just as it does for backups. The entries are purged by the --log-retention option.

This requires an update of the sync database schema to version 1, which adds the log table. The update is applied automatically on first use. After it, the sync database can no longer be opened by earlier versions of Duplicati. If you need to downgrade, the bundled duplicati-database-tool can take the sync database back to version 0; this removes the stored sync logs but causes no other data loss. Backup databases are not affected.

Other notable fixes

  • A potential path traversal when restoring control files from an untrusted source is fixed. Thanks to hataehoon for the report.

  • An invalid retention policy is no longer accepted when a backup is saved.

  • A backup no longer includes the -wal and -shm files of its own database.

  • Pause and resume events are no longer handled out of order, which could leave the queue paused.

  • The progress display no longer shows 0 files of -1 bytes with --disable-file-scanner, and empty files no longer produce negative counts or invalid percentages.

  • The tray icon no longer keeps an old server state after a reconnect, and a startup crash after the Avalonia update is fixed. Avalonia is updated to 12.1.3, which also fixes a duplicated tray icon on GNOME after lock and unlock. Thanks to @Arslan-TR.

  • The new UI gains support for the Hyper-V and MSSQL metadata, Hyper-V restore, advanced options on restore and sync-type logs, plus a set of fixes to remote mounts, remote-source browsing, notifications and progress reporting. The visual password strength requirement and the default export password length are increased, and Angular is updated to 22.2.x.

The full list of changes is in the release notes on the releases page.

Try it and tell us what you find

If you run Hyper-V or MSSQL workloads, or back up through Azure, Google Cloud Storage, Storj, Jottacloud or SMB, this canary is worth putting on a test machine. Report anything unexpected on the Duplicati forum or as an issue on GitHub.

Many of the fixes in this release come from the community. Thanks to the community for the reports, pull requests and testing.

Get started for free

Pick your own backend and store encrypted backups of your files anywhere online or offline. For MacOS, Windows and Linux.

Pick your own backend and store encrypted backups of your files anywhere online or offline. For MacOS, Windows and Linux.

  • Example image