Release: 2.2.0.107 (Canary) 2026-03-20

2.2.0.107_canary_2026-03-20

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

Changes in this version

Linux full disk backup support

This version extends the full disk backup feature to include Linux support.
You can now backup and restore entire disks on Linux, including partition tables.
This is a proprietary module (source available) that requires a license to use in production.

Database tool improvements

The database tool now includes verify and cleanup commands.
The verify command can be used to check if databases exist or are orphaned.
The cleanup command can be used to remove orphaned entries and reclaim space.

Bug fixes and improvements

  • Fixed restore without local database for partial restores
  • Fixed an issue with loading certificate bundles on Windows
  • Fixed Docker image tagging to not push with naked version
  • Added Hetzner and DigitalOcean regions to S3 backend
  • Updated AWS SecretManager dependency

Detailed list of changes:

  • Added Linux support for full disk backup and restore
  • Added verify command to database tool
  • Added cleanup command to database tool
  • Fixed restore without local database
  • Fixed certificate bundle loading on Windows
  • Fixed Docker naked version tagging
  • Added Hetzner S3 regions
  • Added DigitalOcean S3 regions
  • Updated AWS SecretManager dependency

ngclient changes:

Features

  • Added button to suppress warnings
  • Added focus styles for most elements
  • Updated ShipUI, added keyboard navigation
  • Added new provider logos for upcoming storage providers

Bug Fixes

  • Fixed issue with Firefox asking to save passwordds
  • Fixed issue with proxy configuration
  • Datepicker start of week
  • Fixed issue with server ip and port mangling input
  • Fixed refreshToken race condition that caused logout
  • Fixed honeypot using exported type causing login issues

Improvements

  • Improved live logs display
2 Likes

I upgrade my machines, still have issues with my Fedora server when I try to recreate the database for one of the small backups stored on an SMB share:

2026-03-23 08:17:41 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i0d81b020f8bc46d2bb0e056258a4fb6a.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:41 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i0e364b3f87a543aeaebe9c2e1dbb6951.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:42 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i1aa68f4c27414e0faec437b3ef92a91f.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:44 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i553d2a8c7a2244cfb0635b79e567577d.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:45 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i66927d2a97764f10ac6beddab23071c8.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:47 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i7db32de15dc645c590235eedc549d572.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:48 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-i8e3875229e224785882f21363cc8c7cc.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 
2026-03-23 08:17:49 +01 - [Error-Duplicati.Library.Main.Operation.RecreateDatabaseHandler-IndexFileProcessingFailed]: Failed to process index file: duplicati-ia4bea0617d184b1c926b6116bb6b6225.dindex.zip.aes
InvalidDataException: Invalid JSON, expected "PropertyName", but got EndObject, 

Any ideas?

Oh, and when it happened the UI shows a notification but it can’t be cleared nor is there any link to take me to the log:

Not really sure what is happening with this job, but I left it to run and this was the result:

  "Messages": [
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Started:  ()",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: List - Completed:  (695 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b0bb431f45968469bbf22494cc9a68aa0.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b16ca7033dd264aa1b61d278c796b2456.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-i1d8ac54841544c77ba6aafe1ac360b49.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b2757f5449c3a4ebeb955de1eb2ba6b41.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b2f1339de7e834c1ba695af694769f783.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-i5bf304f9f9f843e58b6a2b03edc629ee.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-ic5581dec5dd34fa48e820cb0d428a62a.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b4f2d87eae3da458c9806b5cf400116e4.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-i7f0e9f7fb2f14e61a2bad1918673992e.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-i7f0e9f7fb2f14e61a2bad1918673992e.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b534ce0dd90394202914e34261b5b371d.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-i1d8ac54841544c77ba6aafe1ac360b49.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-ic5581dec5dd34fa48e820cb0d428a62a.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Completed: duplicati-i5bf304f9f9f843e58b6a2b03edc629ee.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-ieafc8426888d4646acaecc6396fb5813.dindex.zip.aes (813 bytes)",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.Operation.Backup.RecreateMissingIndexFiles-RecreateMissingIndexFile]: Re-creating missing index file for duplicati-b9024473f1e804c059e1f7a91612d3719.dblock.zip.aes",
    "2026-03-23 09:30:47 +01 - [Information-Duplicati.Library.Main.BasicResults-BackendEvent]: Backend event: Put - Started: duplicati-ib36a787d5b38458e97bfa0ea4c4c5ba6.dindex.zip.aes (813 bytes)"
  ],
  "Warnings": [
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeWhileActive]: Terminating 4 active uploads",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Error in active upload: Cancelled",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Terminating, but 3 active upload(s) are still active",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Error in active upload: Cancelled",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Terminating, but 2 active upload(s) are still active",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Error in active upload: Cancelled",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Terminating, but 1 active upload(s) are still active",
    "2026-03-23 09:33:05 +01 - [Warning-Duplicati.Library.Main.Backend.Handler-BackendManagerDisposeError]: Error in active upload: Cancelled"
  ],
  "Errors": [
    "2026-03-23 09:33:05 +01 - [Error-Duplicati.Library.Main.Operation.BackupHandler-FatalError]: Fatal error\nDatabaseInconsistencyException: Found inconsistency in the following files while validating database: \n/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10\n/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10\n. Run repair to fix it.",
    "2026-03-23 09:33:05 +01 - [Error-Duplicati.Library.Main.Controller-FailedOperation]: The operation Backup has failed\nDatabaseInconsistencyException: Found inconsistency in the following files while validating database: \n/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10\n/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10\n. Run repair to fix it."
  ],

Just had to adjust all my backups after our clocks changed to summer time. I thought this had been fixed?

I tried a disk image backup on my Windows server this morning, it’s not scheduled and I ran the last one, which was the initial backup, over a month ago. The backup was successful but very quick, too quick and when I checked the logs it had basically done nothing:

It’s the OS drive and I know I’ve done plenty on it including several Windows updates, so there should be some changes to back up. This can’t be right?

v2.1.0.100_canary_2024-11-25

Fixed issue with DST changes causing schedule time-of-day to change

I’m having trouble finding some old records, but I think it worked for first year, switching into DST, and I guess that would be Spring 2025. It didn’t Fall 2025:

Above is Fall 2025 post. In Spring 2026 it worked in 2.2.0.3_stable_2026-01-06, however 2.2.0.103_canary_2026-01-08 failed. I was only 95% sure I didn’t help, which makes me happy in a way to have some better confirmation it’s gone bad.

Maybe it’s random? IDK. I do see some other issues that nobody else is seeing.

EDIT 1:

DST here is Sun Mar 8 at 2 AM. Here are job logs from the day before and then:

Start 2026-03-07 08:20:00
End 2026-03-07 08:25:03
Start 2026-03-08 09:20:04
End 2026-03-08 09:31:55

Job profiling log shows:

2026-03-07 08:35:51 -05 - [Information-Duplicati.Library.Main.Controller-CompletedOperation]: The operation Backup has completed
2026-03-08 09:20:20 -04 - [Information-Duplicati.Library.Main.Controller-StartingOperation]: The operation Backup has started

This is the last server start I can find in the server profiling log. TZ is US Eastern.

2026-02-13 08:27:20 -05 - [Information-Duplicati.Server.Program-ServerStarted]: Server has started and is listening on *, port 8103

So while I can’t positively say I didn’t reschedule it manually, I don’t think I did it…

EDIT 2:

https://github.com/duplicati/duplicati/blob/master/Duplicati/UnitTest/TimeZoneHelperTests.cs was done in original fix, yet misses this somehow. Odd.

I’ve got another backup that failed due to issues with the database - a Wasabi S3 backup. When I tried to delete+repair the database it complained about broken files so I ran a list broken files, decided the one file it found was ok to purge, then ran a purge broken files.

I re-ran the recreate database and it’s running longer, but seems to be having issues during “Reading file locks”, and the logs show it repeatedly beijg unable to access files, retrying, then succeeding:

31 Mar 2026, 11:20:33
Backend event: GetObjectLock - Started: duplicati-b2430b6c66d844b32b852aa0e50ebf...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Retrying: duplicati-b2430b6c66d844b32b852aa0e50eb...
31 Mar 2026, 11:20:23
Operation GetObjectLock with file duplicati-b2430b6c66d844b32b852aa0e50ebf275.db...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Completed: duplicati-b2430b6c66d844b32b852aa0e50e...
31 Mar 2026, 11:20:23
Failed to get object lock for duplicati-b2430b6c66d844b32b852aa0e50ebf275.dblock...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Started: duplicati-b2430b6c66d844b32b852aa0e50ebf...
31 Mar 2026, 11:20:23
Failed to get object lock for duplicati-b23f788b02f1b46a495c1669eb9a58ceb.dblock...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Failed: duplicati-b23f788b02f1b46a495c1669eb9a58c...
31 Mar 2026, 11:20:23
Operation GetObjectLock with file duplicati-b23f788b02f1b46a495c1669eb9a58ceb.db...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Completed: duplicati-b23f788b02f1b46a495c1669eb9a...
31 Mar 2026, 11:20:23
Failed to get object lock for duplicati-b23f788b02f1b46a495c1669eb9a58ceb.dblock...
31 Mar 2026, 11:20:23
Backend event: GetObjectLock - Started: duplicati-b23f788b02f1b46a495c1669eb9a58...
31 Mar 2026, 11:20:13
Backend event: GetObjectLock - Retrying: duplicati-b23f788b02f1b46a495c1669eb9a5...
31 Mar 2026, 11:20:13
Operation GetObjectLock with file duplicati-b23f788b02f1b46a495c1669eb9a58ceb.db...

It goes on and on and on…

I check my link to Wasabit and all is fine:

Any ideas?

Second Linux backup this time Debian, also local to an SMB share, and complaining about the database regarding the donations text file

Duplicati.Library.Interface.DatabaseInconsistencyException: Found inconsistency in the following files while validating database:
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
/root/.config/Duplicati/suppress_donation_messages.txt, actual size 0, dbsize 275, blocksetid: 10
. Run repair to fix it.

Don’t really understand what’s happening.