Commit Graph
13178 Commits
Author SHA1 Message Date
Kenneth SkovhedeandGitHub e623da2dd4 Merge pull request #6775 from duplicati/feature/translation-update
Updated translations
2026-02-19 16:32:29 +01:00
Kenneth Skovhede 34fd0118fc Updated translations 2026-02-19 16:32:01 +01:00
Kenneth SkovhedeandGitHub b29cadbd2c Merge pull request #6772 from duplicati/feature/fix-race-with-recreate-index-files
Wait for index file uploads to complete before starting backup
2026-02-19 15:02:22 +01:00
Kenneth SkovhedeandGitHub c4beb0acc7 Merge pull request #6774 from duplicati/feature/new-translations
Latest translations
2026-02-19 15:02:05 +01:00
Kenneth Skovhede 5db681c656 Latest translations 2026-02-19 15:01:34 +01:00
Kenneth SkovhedeandGitHub 6cfe010599 Merge pull request #6770 from duplicati/feature/transifex-update
Updated translations from Transifex
2026-02-19 13:27:07 +01:00
Kenneth Skovhede ab29642e10 fix(backup): wait for index file uploads to complete before starting backup
Add a synchronization point after recreating missing index files to
ensure all uploads are settled and committed to the database before
the backup process continues. This prevents a race condition where
the backup could start while index files are still being uploaded.

In this case, it would be possible for the backup to reference the file that is currently being deleted. This would be very rare in production as the delays have to align and the new data must be changed and processed very quickly to trigger the issue.

In unittests we have observed the issue for a while but only showing up very rarely.
2026-02-19 13:26:04 +01:00
Kenneth SkovhedeandGitHub 0d7c2e897a Merge pull request #6771 from duplicati/feature/roll-back-supplementary-groups
Roll back supplementary groups
2026-02-19 09:21:34 +01:00
Kenneth Skovhede 805489cf6e Roll back supplementary groups
This PR removes the supplementary groups addition to the service files on Linux.

Turns out that the override does not support variables, so it is not possible to supply the groups this way.

The right way to do this is to run something like:
```
sudo systemctl edit duplicati.service
```

Then add the directive:
```
[Service]
SupplementaryGroups=media backup
```

When saving, an override file will be created, likely in:
```
/etc/systemd/system/duplicati.service.d/override.conf
```

You can now reload the daemon, and the override will persist even on package upgrades.
2026-02-18 14:07:20 +01:00
Kenneth Skovhede 1df253b469 Updated translations from Transifex 2026-02-18 13:50:54 +01:00
Kenneth SkovhedeandGitHub 93c3427293 Merge pull request #6765 from aureliandevel/fix/s3-host-port
fix(s3): preserve port in endpoint and fix path validation
2026-02-18 11:36:10 +01:00
Kenneth SkovhedeandGitHub 4b92cca5dc Merge pull request #6769 from duplicati/feature/nullable-warnings-fix
Fixed a few nullable warnings
2026-02-18 11:32:40 +01:00
Kenneth Skovhede d7f9981f49 Fixed a few nullable warnings 2026-02-17 10:37:08 +01:00
Kenneth SkovhedeandGitHub 7dc3250d37 Merge pull request #6760 from duplicati/feature/fix-large-volume-inputs
Fixed large SQLite inputs
2026-02-17 09:44:22 +01:00
aureliandevel 8d8c068473 Adds unittest and live test for Backend tester. 2026-02-17 17:16:44 +11:00
Kenneth SkovhedeandGitHub 459a1c431e Merge pull request #6758 from duplicati/feature/fix-rpm-spec-ownership
Improved ownership calculation for RPM
2026-02-16 10:33:09 +01:00
aureliandevel 30fa7e8958 fix(s3): preserve port in endpoint and fix path validation 2026-02-15 17:22:03 +11:00
Kenneth Skovhede cf02c1addf Fixed large SQLite inputs
When performing queries with large inputs, there is a possibility that we reach the maximum number of possible parameters. If the query exceeds the maximum number of parameters the query fails.

This change uses a temporary table that will be created in the case the inputs exceed the total number available parameters, making sure the calls proceed as before with small inputs, but uses temporary tables on larger inputs.

Some tests were added to ensure the update works as expected, even with large inputs.
2026-02-11 13:34:58 +01:00
Kenneth SkovhedeandGitHub 1a498f3ed6 Merge pull request #6756 from duplicati/feature/fix-guess-scheme-on-short-paths
Fixed bug with scheme detection
2026-02-09 11:56:47 +01:00
Kenneth Skovhede 581c87ec41 Fix openSuse build
This fixes compatibility with OpenSUSE by using the target filenames as dependencies instead of the package names that differ (libICE vs libICE6).

This fixes #6166
2026-02-09 11:54:53 +01:00
Kenneth Skovhede f5baad77c1 Improved ownership calculation for RPM
This PR narrows the files that are captured as being provided/owned by Duplicati, to avoid cases where it would match something overly broad.

This fixes issue #2540

However, it looks like issue #2540 was resolved in Fedora at some point as it was no longer an issue in Fedora 43.
2026-02-09 10:52:44 +01:00
Kenneth Skovhede 7a993421f2 Fixed bug with scheme detection
This PR fixes a reported issue with strings that are less than 3 characters.

This is unlikely, but happens if the code tries to get the scheme of a path, like `/a` or `/`.

The updated logic returns the scheme if one exists, and it is less than 15 characters (to avoid leaking sensitive information).
2026-02-07 16:13:52 +01:00
Kenneth SkovhedeandGitHub d9ee48f900 Merge pull request #6755 from duplicati/release/canary-2.2.0.104
Version bump to v2.2.0.104-2.2.0.104_canary_2026-02-06
2026-02-07 15:50:55 +01:00
Kenneth Skovhede b267d78df0 Version bump to v2.2.0.104-2.2.0.104_canary_2026-02-06
You can download this build from:

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

Signature file: https://updates.duplicati.com/canary/duplicati-2.2.0.104_canary_2026-02-06.signatures.zip
v2.2.0.104_canary_2026-02-06 v2.2.0.104-2.2.0.104_canary_2026-02-06
2026-02-06 19:00:49 +01:00
Kenneth SkovhedeandGitHub 6e675f9aaf Merge pull request #6750 from duplicati/feature/guard-against-duplicati-source-paths
Handle duplicate source paths
2026-02-06 16:35:07 +01:00
Kenneth SkovhedeandGitHub 18c12b66c3 Merge pull request #6753 from duplicati/feature/check-temp-space
Check free temporary space
2026-02-06 15:56:29 +01:00
Kenneth SkovhedeandGitHub a8255fa5ab Merge pull request #6749 from duplicati/feature/bump-ngclient-203
Bumped ngclient to 0.0.205
2026-02-06 15:55:09 +01:00
Kenneth Skovhede be761b3a62 More agressive FS path matching in test 2026-02-06 14:59:36 +01:00
Kenneth SkovhedeandGitHub fd51ec2927 Merge pull request #6754 from duplicati/feature/add-selectel-s3-hosts
Added Selectel to list of S3 providers
2026-02-06 14:38:20 +01:00
Kenneth Skovhede 917f059626 Bumped ngclient to .205 2026-02-06 14:37:11 +01:00
Kenneth Skovhede efac1ed06e Added extra info tro track a rare unittest failure 2026-02-06 14:37:01 +01:00
Kenneth SkovhedeandGitHub baca571ef8 Merge pull request #6727 from duplicati/feature/prevent-restore-target-escape
Prevent restore target escape
2026-02-06 14:33:01 +01:00
Kenneth Skovhede 4c9983f677 Added Selectel to list of S3 providers 2026-02-06 14:22:39 +01:00
Kenneth Skovhede 1abbd3e008 Fixed UI test 2026-02-06 14:15:09 +01:00
Kenneth Skovhede c2fcd5a261 Bump to .204 2026-02-06 14:07:21 +01:00
Kenneth Skovhede 1937e285bc Fixed a renamed button in test 2026-02-06 14:05:45 +01:00
Kenneth Skovhede afeb5ca632 Added support for using a single environment variable for registering both agent and others. 2026-02-06 14:05:19 +01:00
Kenneth Skovhede c606dba53a Fixed issues with testing remote sources when masked 2026-02-06 14:04:51 +01:00
Kenneth Skovhede 05ea1dfafe Check free temporary space
This PR adds checks for free temporary space when starting the server and when restoring.

On systems that have limited space in the temp folder a warning will now be shown.

This is intended to capture issues on some Docker systems where /tmp is mounted in memory instead of being disk backed.

It will also detect the issue on other systems that are space constrained.
2026-02-06 10:37:27 +01:00
Kenneth Skovhede 0f811308be Fixed symlinks tests by allowing restores outside target 2026-02-06 10:24:51 +01:00
Kenneth Skovhede 458fe8013e Don't normalize paths with test lookups 2026-02-05 17:22:01 +01:00
Kenneth Skovhede a31d6d4655 Fixed checks handling path traversal with mixed directory separator characters 2026-02-05 17:15:06 +01:00
Kenneth Skovhede 8ec1493d55 Fixed tests also working on Windows 2026-02-05 15:18:11 +01:00
Kenneth Skovhede cf8ef437c9 Fixed an edge case where the code would attempt to create a parent folder outside the restore target prior to applying metadata 2026-02-05 15:17:14 +01:00
Kenneth Skovhede e7aa60fba0 Handle duplicate source paths
This PR adds guards to prevent creating filesets with multiple files that have the same path.

While it should technically be impossible to have multiple entries that have the same path, it could happend either due to glitches or because the source data (manual lists, remote sources, etc) returns duplicates.

This PR adds a simple check for each folder to ensure that on a folder-level, duplicate paths cannot be introduced.

There is also a post-backup check to evict any duplicates, and the recreate process will reject duplicate paths.

Finally, the repair command will remove duplicates if they somehow manage to get into the database anyway.

A database-level prevention is not currently feasible as it needs a cross-table check for uniqueness, which requires more work from the database to check for each added file. Since this is expected to be a very rare event, the added processing was not justified.
2026-02-05 11:06:41 +01:00
Kenneth Skovhede 601ee64b2c Bumped ngclient to 0.0.203 2026-02-05 10:02:08 +01:00
Kenneth Skovhede 56f74803fc Fixed edge cases for path traversal protection 2026-02-05 09:21:24 +01:00
Kenneth SkovhedeandGitHub e6c0b9b045 Merge pull request #6747 from duplicati/feature/macos-snapshot-support
Implement support for filesystem snapshots on macOS using APFS
2026-02-04 16:45:35 +01:00
Kenneth SkovhedeandGitHub 364f67822f Merge pull request #6738 from duplicati/feature/encrypt-and-mask-remote-sources
Remote source masking and encrypting
2026-02-04 15:38:27 +01:00
Kenneth Skovhede 44bef1e855 Implement support for filesystem snapshots on macOS using APFS (Apple File System). This allows disks-consistent backups and backing up files that are locked by other processes by creating and mounting local snapshots using tmutil.
Key changes:
- Add `MacOSSnapshot` class implementing `SnapshotBase`
- Add helper scripts for creating, finding, and removing APFS snapshots
- Update `SnapshotUtility` to initialize macOS snapshots
- Enable `snapshot-policy` option for macOS in `Options.cs`
- Update build configuration to include APFS scripts
- Update snapshot test utility with macOS support

This fixes #6409
2026-02-04 15:02:31 +01:00