13853 Commits

Author SHA1 Message Date
Kenneth Skovhede 373f4d2102 Merge pull request #6889 from duplicati/feature/default-aescrypt-v2
AESCrypt default v2
2026-05-04 17:23:34 +02:00
Kenneth Skovhede 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 Skovhede 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
Kenneth Skovhede 753a52b199 Merge pull request #6887 from duplicati/feature/update-localizations-2605
Updated all localizations
2026-05-04 14:38:14 +02:00
Kenneth Skovhede ea714e529a Updated all localizations 2026-05-04 14:37:50 +02:00
Kenneth Skovhede 0725c2b376 Merge pull request #6801 from duplicati/features/upgrade-aescrypt-v3
Update SharpAESCrypt to v3
2026-05-04 14:32:57 +02:00
Kenneth Skovhede f3b09946c0 Merge pull request #6886 from duplicati/feature/guard-against-secretprovider-init-fail
Fix SecretProvider Init Failure
2026-05-04 14:06:09 +02:00
Kenneth Skovhede 42a15cacb5 Fix SecretProvider Init Failure
This PR adds a try/catch around initializing the default secret provider, to avoid crashes on startup where the setup is not correct for the provider.

If an explicit provider is set, this will crash as the user explicitly asked for it, but it is not working.

With this change, the implicit secret provider does not cause crashes.
2026-05-04 13:31:16 +02:00
Kenneth Skovhede b86c8ef2f1 Merge pull request #6885 from duplicati/feature/support-do-not-track
Support `DO_NOT_TRACK=1`
2026-05-04 13:20:57 +02:00
Kenneth Skovhede 51a5b002c9 Merge branch 'master' into features/upgrade-aescrypt-v3 2026-05-04 11:56:27 +02:00
Kenneth Skovhede b7592b64fa Reduce AES iterations for tests as they are otherwise slowed down significantly due to low-power CI tools. 2026-05-04 11:53:42 +02:00
Kenneth Skovhede b5ca38fd28 Support DO_NOT_TRACK=1
This adds support for the `DO_NOT_TRACK` environment variable, which is a proposal to make all tools agree on a single opt-out variable, similar to the browser header.
2026-05-04 11:49:14 +02:00
Kenneth Skovhede 9fd6e83536 Merge pull request #6884 from duplicati/feature/quota-disable-on-remote-sync
Add `quote-disable` to synctool
2026-05-04 11:34:15 +02:00
Kenneth Skovhede 64e848f490 Merge branch 'master' into features/upgrade-aescrypt-v3 2026-05-04 10:27:35 +02:00
Kenneth Skovhede 25d9eeb1b7 Merge pull request #6825 from aureliandevel/fix/maintenance-write-path-config-persistence
Fix persisted write-path option restore for maintenance and recompress
2026-05-04 10:26:36 +02:00
Kenneth Skovhede bf1f5a01ce Merge pull request #6873 from duplicati/feature/full-zstd-compression
Added zstd compression
2026-05-04 10:23:52 +02:00
Kenneth Skovhede 85c99c6f09 Merge pull request #6878 from duplicati/feature/detect-default-lock-config
Detect default lock refresh
2026-05-04 10:22:47 +02:00
Kenneth Skovhede cc0a82ec24 Merge pull request #6879 from duplicati/feature/post-backup-script
Added post-backup script
2026-05-04 10:21:35 +02:00
Kenneth Skovhede fc675638c4 Throwing a UserInformationException instead of the generic exception 2026-05-04 10:19:54 +02:00
Kenneth Skovhede 0f497c5104 Merge pull request #6880 from duplicati/feature/log-500-errors
Log 500 errors to live-log
2026-05-04 10:18:51 +02:00
Kenneth Skovhede 69ae446440 Merge pull request #6882 from duplicati/feature/more-defensive-delete
More defensive delete
2026-05-04 10:18:19 +02:00
Kenneth Skovhede 67e63ff393 Merge branch 'master' into feature/more-defensive-delete 2026-05-04 10:18:15 +02:00
Kenneth Skovhede 9717450b30 Add quote-disable to synctool
This PR adds support for using the `quota-disable` option to diable the quota check performed before executing the remote sync operation.

This is needed if the quota information returned is unreliable.
2026-05-04 10:17:54 +02:00
Kenneth Skovhede 2f83e23f94 Merge pull request #6883 from duplicati/feature/allow-version-in-search-api
Allow versions in search
2026-05-04 10:09:15 +02:00
Kenneth Skovhede 8835389e62 Allow versions in search
This PR extends the search API to allow versions to be added so searching can be limited to specific versions.

Before this PR, only time was supported, but this is picking versions older than the timestamp as well.
2026-05-01 15:05:55 +02:00
Kenneth Skovhede 6e13cdbc53 More defensive delete
This PR adds a small clause the prevents the delete query from failing if there are inconsistencies where deleted blocks can exist and a volume has no blocks.

I was not able to reproduce the issue without manipulating the database, but it was reported happening on the forum.

Co-authored-by: Copilot <copilot@github.com>
2026-05-01 15:02:09 +02:00
Kenneth Skovhede e3db4a967f Log 500 errors to live-log
This PR adds logging for 500 errors to the live logs.

As a precaution, errors that are unknown in nature are not reported to the client as they could expose sensitive information to an unauthenticated caller.

With this PR the errors are logged in the live-log and are visible to authenticated users.
2026-05-01 07:12:44 +02:00
Kenneth Skovhede 39636c6364 Added post-backup script
This PR adds a new `--run-script-post-backup` option that allows running a script after the main backup operation has completed, but before locking, compacting and verification is done.

The use for this is intended for cases where you want to stop or pause some service, run a backup, and then resume the service. Prior to this PR you would need to wait for the entire backup operation to complete, but with the new option you can resume as soon as the source data is no longer needed.
2026-05-01 07:06:12 +02:00
aureliandevel 4ecac56250 Merge branch 'duplicati:master' into fix/maintenance-write-path-config-persistence 2026-05-01 11:37:04 +10:00
Kenneth Skovhede c39d67a9ee Merge pull request #6875 from duplicati/feature/preserve-cert-chain
Return full certificate chains
2026-04-30 20:03:52 +02:00
Kenneth Skovhede c64f7c73ce Merge pull request #6876 from duplicati/feature/fix-quote-size-incorrect
Fix incorrect quota size reported
2026-04-30 20:03:27 +02:00
Kenneth Skovhede 7fdefea533 Detect default lock refresh
This PR adds a probing mechanism that checks if the backup is using remote file locking and automatically sets the `--repair-refresh-lock-info` setting based on that finding.

If the backup is using `--remote-file-lock-duration` then the operation will refresh locks by default. otherwise it will not refresh locks.

If the backup sets `repair-refresh-lock-info` then that value is used.

Priority is (most important first):
- input value (from FE)
- backup `repair-refresh-lock-info` setting
- backup `remote-file-lock-duration`
- global settings `repair-refresh-lock-info`
- global settings `remote-file-lock-duration`

If the backup is using remote file locking, then most likely the user will want the repaired database to contain lock information. If remote locking is not used, the repair will now skip fetching lock information.
2026-04-30 19:48:58 +02:00
Kenneth Skovhede ae32caa05d Fix incorrect quota size reported
This PR partially re-introduces the logic attempting to get the free space for a specific path.

The code before this would incorrectly always return the free space of `/` on non-Windows, instead of the actual mounted path's free space.
2026-04-30 16:03:26 +02:00
Kenneth Skovhede 1f5411ec0b Return full certificate chains
Rewrote the certificate selector to use the TlsHandshakeCallbackOptions  as the HttpsConnectionAdapterOptions did not support returning the full chain, but only returned the leaf certificate.

This fixes #6807
2026-04-30 15:29:49 +02:00
Kenneth Skovhede b364d7d16e Merge pull request #6874 from duplicati/dependabot/npm_and_yarn/npm_and_yarn-5f44a83626
Bump postcss from 8.4.47 to 8.5.12 in the npm_and_yarn group across 1 directory
2026-04-30 13:05:22 +02:00
dependabot[bot] 01edfb0e26 Bump postcss in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [postcss](https://github.com/postcss/postcss).


Updates `postcss` from 8.4.47 to 8.5.12
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.47...8.5.12)

---
updated-dependencies:
- dependency-name: postcss
  dependency-version: 8.5.12
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-30 11:04:50 +00:00
Kenneth Skovhede 1f06fd1c2e Merge pull request #6869 from duplicati/feature/improve-expired-link-handling
Handle expired links
2026-04-30 13:04:49 +02:00
Kenneth Skovhede cdb0e86936 Merge pull request #6870 from duplicati/feature/remote-volume-size-option
Add remote-volume-size alias
2026-04-30 13:04:29 +02:00
Kenneth Skovhede dfc6272eec Merge pull request #6871 from duplicati/feature/bump-avalonia-12-0-2
Bump Avalonia 12.0.2
2026-04-30 13:03:39 +02:00
Kenneth Skovhede 3ec07aaee1 Added zstd compression
This PR adds experimental support for using either ZStandard or GZip compression. Unlike the Zip module, which also supports these methods, the new module does a full-volume compression which is both much faster and compresses better with modern compression algorithms.

Because the compressor can see the full volume (and not just the blocks) it can compress data across blocks.

The downside to this is that it is not possible to take a single entry out of the compressed stream, but instead, Duplicati needs to decompress the whole stream and can then access the contents.

To make the implementation compatible with standard tools, the inner format is Tar (using ustar format). To allow faster reading, a small end-of-file header is added to the Tar file, emulating the concept from Zip files.

This small addition allows Duplicati to have random access to files in a Tar volume without needing to scan the whole thing.

To make sure data is always recoverable, the format is 100% compatible with regular tools, so `untar -xf` will work on the created volumes.

The downside is an extra pass for decompression when reading the volumes. When writing, each entry (a block of data most commonly) is written to a temporary file before being added to the output stream. It is possible to toggle this to use a memory buffer for even more speed up.

The ZStandard compression is from `ZstdSharp.Port` which has excellent performance.

When we move to .NET11 this can easily be changed to the new built-in module.

Since this is the first attempt to add this, it will log a warning on each use, explaining that the feature is currently just for testing.

Co-authored-by: Copilot <copilot@github.com>
2026-04-30 13:03:24 +02:00
Kenneth Skovhede 0e6c60cb8e Bump Avalonia 12.0.2
This updates Avalonia to 12.0.2 to avoid hard dependency on DX12.
2026-04-30 09:19:44 +02:00
Kenneth Skovhede e719ff3725 Add remote-volume-size alias
This PR simply adds an alias to `--dblock-size` so it can also be supplied as `--remote-volume-size` as the latter is more intuitive for people not familiar with Duplicati's file naming conventions.
2026-04-29 15:29:48 +02:00
Kenneth Skovhede d6f4c17f34 Merge pull request #6864 from aureliandevel/fix/full-result-option-mismatch
Fix full result option mismatch by adding alias support and updating tests
2026-04-29 15:28:05 +02:00
Kenneth Skovhede 50d79d573c Handle expired links
This PR updates the code that handles remote connections to detect server emitted error messages and log them.

Prior to this PR an expired link would make the UI appear to be sort-of connected with no indication of why it would not fully connect.
2026-04-29 15:26:27 +02:00
aureliandevel ff131f75c3 Fix full result option mismatch by adding alias support and updating tests 2026-04-26 11:51:51 +10:00
aureliandevel ee36368b5c Merge branch 'duplicati:master' into fix/maintenance-write-path-config-persistence 2026-04-26 10:00:59 +10:00
Carl-Johannes Johnsen 4701179e57 Merge pull request #6861 from carljohnsen/feature/s3-precomputed-hashes
Feature/S3 pre-computed hashes
2026-04-24 15:33:21 +02:00