Commit Graph
13897 Commits
Author SHA1 Message Date
Kenneth Skovhede f5e07dec6b Hide test options
This PR hides the `--unittest-mode` option that is used to treat all warnings as errors which is helpful when testing things, but is not intended to be used elsewhere.

The option is simply not shown in the list of supported options but still works in case anyone wants to use it.
2026-05-13 15:42:36 +02:00
Kenneth SkovhedeandGitHub 131df8f58b Merge pull request #6913 from duplicati/feature/deprecate-backends
Deprecate old SharePoint
2026-05-13 14:46:21 +02:00
Kenneth SkovhedeandGitHub 322bd82270 Merge pull request #6912 from duplicati/feature/improve-restore-message
Improve restore message
2026-05-13 14:45:53 +02:00
Kenneth Skovhede 55c2ebf6c7 Deprecate old SharePoint
This PR deprecates the `mssp` and `od4b` backends as they stopped working when the APIs were turned off.

The upgrade path is to use `sharepoint` instead (which used to be named "SharePoint v2").

This PR also adds a small amount of metadata to modules so they can be marked as "untested" or "deprecated", and the configuration for marking modules has been set up in `BackendModules.cs`.

The backends that we currently cannot test (usualy due to not having public signups) are now marked as untested.
2026-05-13 13:30:39 +02:00
Kenneth Skovhede 94f42a312b Improve restore message
This PR changes the restore message when no files are restored.

The logic now keeps track of existing files that do not need to be restored, as well as the actual number of bytes written.

The size of restored files was tracked previously, but was instead reporting the size of the written data.

With this update the legacy restore and new restore report the same numbers.

The warning that is shown if no files are restored has been updated to check if existing files were present, and if so, the restore is assumed to have worked as expected, and an information message is logged, instead of the warning message.
2026-05-13 10:57:28 +02:00
Kenneth SkovhedeandGitHub d12e0a5d07 Merge pull request #6911 from duplicati/feature/enforce-metahash
Enforce metahash in filelist
2026-05-13 10:40:42 +02:00
Kenneth SkovhedeandGitHub 1cdc498a35 Merge pull request #6908 from duplicati/feature/more-failsafe-synthetic-list
Add safeguard to synthetic filelist
2026-05-13 10:39:55 +02:00
Kenneth SkovhedeandGitHub 9f1f19896b Merge pull request #6910 from duplicati/feature/fix-filen-ci
Fix Filen backend tests in CI
2026-05-13 10:39:30 +02:00
Kenneth Skovhede 475f846ff7 Fixed rename to send correct fields 2026-05-13 08:45:23 +02:00
Kenneth Skovhede e51f16827c Enforce metahash in filelist
This PR adds a small change when writing the `filelist.json`. The code now *requires* that a metahash is present when writing an entry.

Previously, the code would handle cases where there was no metahash and output the `filelist.json` without these fields.

However, the recreate fails if the fields are missing due to database consistency requirements.

Also, there appear to be no regular code paths that should end up creating an entry without the metahash.

This may need to be reverted, but for now it will help track down if there are any cases where a missing metahash is needed, and if we find that, we can fix the relevant functions and revert this change.
2026-05-13 07:00:22 +02:00
Kenneth Skovhede 27eca5b0b6 Fix Filen backend tests in CI 2026-05-13 06:53:08 +02:00
Kenneth Skovhede 8fad3dce78 Removed unused function 2026-05-12 13:24:12 +02:00
Kenneth Skovhede 89654c2474 Add safeguard to synthetic filelist
This adds an extra clause when building a synthetic filelist to avoid cases where the synthetic filelist fails to be generated because some entries are orphans.

The tests that reproduce this are quite slow and require some tampering with the database to get into the faulty state, so the tests will not run in CI testing but can manually be executed.
2026-05-12 13:00:02 +02:00
Kenneth SkovhedeandGitHub 4e1b9891f5 Merge pull request #6907 from duplicati/release/canary-2.3.0.102
Version bump to v2.3.0.102-2.3.0.102_canary_2026-05-09
2026-05-09 16:24:40 +02:00
Kenneth Skovhede 7fce7c56e5 Version bump to v2.3.0.102-2.3.0.102_canary_2026-05-09
You can download this build from:

Binaries: https://updates.duplicati.com/canary/?version=2.3.0.102

Signature file: https://updates.duplicati.com/canary/duplicati-2.3.0.102_canary_2026-05-09.signatures.zip
v2.3.0.102-2.3.0.102_canary_2026-05-09 v2.3.0.102_canary_2026-05-09
2026-05-09 12:02:47 +02:00
Kenneth SkovhedeandGitHub deeae0746a Merge pull request #6906 from duplicati/release/canary-2.3.0.101
Version bump to v2.3.0.101-2.3.0.101_canary_2026-05-04
2026-05-09 09:55:02 +02:00
Kenneth SkovhedeandGitHub 9b078d43b3 Merge pull request #6904 from duplicati/feature/bump-ngclient-221
Bump ngclient to 0.0.221
2026-05-09 09:44:05 +02:00
Kenneth SkovhedeandGitHub c276e6b171 Merge pull request #6905 from duplicati/dependabot/npm_and_yarn/npm_and_yarn-053c9c4054
Bump fast-uri from 3.0.1 to 3.1.2 in the npm_and_yarn group across 1 directory
2026-05-09 09:43:50 +02:00
Kenneth SkovhedeandGitHub 5c94c07f3e Merge pull request #6903 from duplicati/feature/websocket-for-remotemanagement
Websocket for remote management
2026-05-09 09:43:30 +02:00
dependabot[bot]andGitHub bdd90576f1 Bump fast-uri in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [fast-uri](https://github.com/fastify/fast-uri).


Updates `fast-uri` from 3.0.1 to 3.1.2
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.0.1...v3.1.2)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.2
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 21:27:55 +00:00
Kenneth Skovhede a692416ee2 Bump ngclient to 0.0.221 2026-05-08 19:37:37 +02:00
Kenneth SkovhedeandGitHub 7a289ce1c9 Merge pull request #6902 from duplicati/feature/update-usage-reporter
Handle immediate usagereporter update
2026-05-08 19:11:10 +02:00
Kenneth Skovhede 05d91e6052 Websocket for remote management
This PR adds websocket messages so the FE does not have to use polling to update the view state.
2026-05-08 19:10:01 +02:00
Kenneth SkovhedeandGitHub 165322d9e1 Merge pull request #6901 from duplicati/feature/persist-used-compression-module
Persist used compression module
2026-05-08 15:43:10 +02:00
Kenneth Skovhede 218304c971 Handle immediate usagereporter update
This PR fixes an issue where the callback for updating the usage reporter was not correctly registered.

The effect of this was that settings changes should update the usagereporter (disabling or setting the level), but due to the missing callback settings were not applied until the server restarted.

With this fix, the settings are applied immediately.
2026-05-08 15:42:38 +02:00
Kenneth SkovhedeandGitHub 1a8c6a35f1 Merge pull request #6900 from duplicati/feature/slow-query-monitor
Add slow query monitor
2026-05-08 13:46:48 +02:00
Kenneth SkovhedeandGitHub d1418acd48 Merge pull request #6899 from duplicati/feature/add-drime-cloud-support
Add Drime Cloud backend
2026-05-08 13:45:32 +02:00
Kenneth Skovhede d998ca81d3 Persist used compression module
This PR fixes an issue with using a non-default compression method. The recreate database will detect the compression module correctly and restore everything. But when recreating the database it will look at the `compression-module` from the given options and persist this value into the database.

If the recreate was made without passing in the compression module in the options, the default compression module would be persisted to the database, which would later cause problems for operations that rely on this value.

With this PR there is a test for the behavior, and the compression module is extracted from the first volume, similar to how blocksize and other options are written back.
2026-05-08 12:53:52 +02:00
Kenneth Skovhede 2e3e301fda Added CI testing for Drime 2026-05-08 10:35:35 +02:00
Kenneth SkovhedeandGitHub a1968ed515 Merge pull request #6898 from duplicati/feature/handle-empty-index-files
Handle empty index files
2026-05-08 10:31:55 +02:00
Kenneth Skovhede 308e8428c7 Add slow query monitor
When queries are slow on end-user machines it is hard to debug what the exact problem is.

The typical flow is to discover a "stuck" process. But since profiling logging was not enabled there is no output.

The user then has to re-run the problematic operation with profiling on, and locate the last output where the call gets stuck.

This PR introducces a monitor mechanism where all queries register themselves prior to execution, and then de-register once done.

At a fixed interval, the list of active queries is examined, and if a query is found to be running longer than the threshold, it will be logged as a warning.

This means the user can simply go view the live log for warnings, and the offending query will be emitted.

The default threshold is set at a conservative 30 minutes. Since the timer only checks at the interval, it can take at most 2x the interval before a message is logged. After this, a message is logged each time the interval is reached (e.g., a new warning is logged every 30 min).

The option `--long-database-query-threshold` can be used to set a different threshold.
2026-05-08 10:30:47 +02:00
Kenneth Skovhede 535817603c Add Drime Cloud backend
This PR adds a new backend for Drime Cloud.

There is currently an issue with the rename API so the backend will fall back to download+upload+delete if the soft-delete feature is enabled in the general Duplicati options (soft-delete on the backend works).

Implementation supports both username+password login or API key.

Files larger than 5MiB are uploaded with multipart uploads.
2026-05-07 22:50:54 +02:00
Kenneth SkovhedeandGitHub 4afa374d7b Merge pull request #6897 from duplicati/feature/improve-docker-image
Add package to Docker image
2026-05-07 15:06:25 +02:00
Kenneth Skovhede 95516aa08b Handle empty index files
In some cases it is possible for the index volumes to be created with empty block lists. If this happens, the reader would fail as the strict JSON parsing would encounter an unexpected token.

With the fix, the code now correctly reads such JSON documents and some variants.

Added a number of tests to make sure these cases are correctly reproduced.

This fixes #6892
2026-05-07 15:01:30 +02:00
Kenneth Skovhede 80dd3db999 Add package to Docker image
This PR adds the `libgssapi` package to the Docker image to avoid warnings when starting Duplicati inside Docker.

This fixes #6862
2026-05-07 12:54:00 +02:00
Kenneth SkovhedeandGitHub 5418d810b2 Merge pull request #6895 from duplicati/feature/fix-issue6820
Optimize synthetic filelist creation
2026-05-07 09:37:00 +02:00
Kenneth SkovhedeandGitHub ac58ed9d98 Merge pull request #6893 from duplicati/feature/improve-sql-logging
Improve SQL logging
2026-05-07 09:36:44 +02:00
Kenneth SkovhedeandGitHub b3959b0c2d Merge pull request #6896 from duplicati/feature/rename-to-ms-365
Rename strings for M365
2026-05-06 16:39:43 +02:00
Kenneth Skovhede 3fdfb5454f Rename strings for M365
Update strings from "Office 365" to "Microsoft 365"
2026-05-06 16:39:22 +02:00
Kenneth Skovhede 584884de0a Always log the append queries as they are not in the hot-path for backups 2026-05-06 15:20:16 +02:00
Kenneth Skovhede ab487bdde2 Optimize synthetic filelist creation
This PR adds a test that generates a synthentic filelist of a variable size, and then measures the time it takes to recreate the fileset.

As there was a reported slowdown, analysis indicated that the query would grow in the order of O=N^2, where N is the number of paths.

The code is then updated to instead use some temporary on-disk space to lay out the paths and then insert them as a new fileset. This should bring the time down to O=N.

Based on a test with 10k files, the query speed up is ~900x, but will be more on larger filesets.
2026-05-06 15:16:10 +02:00
Kenneth Skovhede 4244e71fee Improve SQL logging
This PR improves SQL logging by capturing many places where the calls would previously just hit the database and not produce any logging output.
2026-05-06 10:52:58 +02:00
Kenneth Skovhede a1b957f812 Version bump to v2.3.0.101-2.3.0.101_canary_2026-05-04
You can download this build from:

Binaries: https://updates.duplicati.com/canary/?version=2.3.0.101

Signature file: https://updates.duplicati.com/canary/duplicati-2.3.0.101_canary_2026-05-04.signatures.zip
v2.3.0.101-2.3.0.101_canary_2026-05-04 v2.3.0.101_canary_2026-05-04
2026-05-04 19:19:26 +02:00
Kenneth Skovhede 1f429199b7 Force AWSSDK to 4.0.3.3+ 2026-05-04 17:31:18 +02:00
Kenneth SkovhedeandGitHub 373f4d2102 Merge pull request #6889 from duplicati/feature/default-aescrypt-v2
AESCrypt default v2
2026-05-04 17:23:34 +02:00
Kenneth SkovhedeandGitHub 2165f56f91 Merge pull request #6890 from duplicati/feature/bump-ngclient-220
Bump ngclient 0.0.220
2026-05-04 17:22:14 +02:00
Kenneth Skovhede 297c837b8a Bump ngclient 0.0.220 2026-05-04 17:21:20 +02:00
Kenneth SkovhedeandGitHub a45762624c Merge pull request #6888 from duplicati/feature/strip-xattrs
Strip xattrs from tar
2026-05-04 16:34:25 +02:00
Kenneth Skovhede 73a3e627c1 AESCrypt default v2
This PR sets the default AESCrypt stream format to v2.

This is done to introduce the ability to read the v3 format before switching to the new format. With a delayed activation, it is more likely that users can easily roll back a version if needed.
2026-05-04 16:19:56 +02:00
Kenneth Skovhede 96d6edd960 Strip xattrs from tar
During building of the RPM packages we use a tar file. This update simply avoid bundling unused ACLs and XATTR values in the tar file.
2026-05-04 15:21:30 +02:00