Commit Graph
28 Commits
Author SHA1 Message Date
Kenneth SkovhedeandCopilot 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 c0f40e19ca Updated copyright year to 2026 across the project 2026-04-16 15:21:24 +02:00
Kenneth Skovhede c3b0392cbc Removed option to toggle zip64 2025-03-31 13:26:00 +02:00
Kenneth SkovhedeandGitHub 9464caf622 Feature/update license 2025 (#5851)
* Fixed some minor whitespace issues

* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Kenneth Skovhede 3f3144218f Removed 7z from the source as it has been marked experimental for 7 years.
This fixes #5630
2024-11-01 17:40:09 +01:00
Kenneth Skovhede 3f88ea7074 Merge remote-tracking branch 'origin/master' into feature/support-built-in-zip 2024-09-09 17:25:22 +02:00
Suguru Hirahara ec50bf6a65 Remove conjugation - Compression/Strings.cs 2024-08-13 08:08:29 -04:00
Suguru Hirahara e254aa36df Merge branch 'master' of https://github.com/duplicati/duplicati into strings-ZIP-Zip-zip 2024-08-12 10:47:36 -04:00
Kenneth SkovhedeandGitHub e902623609 Merge pull request #5409 from luixxiul/Strings-builtin
Add 'Use this option to ...' to strings
2024-08-12 16:15:19 +02:00
Suguru Hirahara b7f4515886 Fix inconsistent capitalization of 'ZIP' 2024-08-07 22:11:15 -04:00
Suguru Hirahara c2ab6d0c16 Update the string CompressionmethodLong 2024-08-06 12:24:30 -04:00
Suguru Hirahara dd0bd401f9 Replace 'this option can be used to' with the common expression 'use this option to' 2024-08-06 12:09:11 -04:00
Suguru Hirahara d4e883ff1f Make strings for deprecated options consistent 2024-08-05 04:23:48 -04:00
Suguru Hirahara 5848c6bf46 Change 'Use this flag' to 'Use this option' 2024-07-31 01:52:47 -04:00
Suguru Hirahara 9df8c26287 Add periods to strings on Compression/Strings.cs 2024-07-29 23:18:46 -04:00
Kenneth Skovhede 611066f9cb Add support for using the faster built-in .NET zip. 2024-07-29 14:09:26 +02:00
Suguru Hirahara 43337dca90 Move strings 'Description' and 'DisplayName' up to the top inside the block 2024-07-29 02:23:07 -04:00
Suguru Hirahara e702013c2e Fix indents 2024-07-26 22:32:34 -04:00
Suguru Hirahara 011f71f9d2 Sort strings on Compression/Strings.cs 2024-07-26 22:31:06 -04:00
Kenneth Skovhede 40dd3c6816 Updated all license mentions to MIT 2024-02-28 15:45:30 +01:00
Kenneth Skovhede fe7f9cf67a Added warnings to discourage people from using 7z in the current state 2018-02-22 17:11:07 +01:00
Kenneth Skovhede d09868e993 Added zip64 support to the ZipCompressionModule 2017-06-29 14:50:48 +02:00
Kenneth Skovhede 1424be05f9 Fixed a bunch of typos.
This fixes #2278.
2017-01-23 22:12:24 +01:00
agrajaghh f0c0e9ffd5 Revert "Update Strings.cs"
This reverts commit 4266ed9d4a.
2017-01-09 20:54:18 +01:00
sfahrenholzandGitHub 4712f116a4 Update Strings.cs 2016-12-28 19:21:57 +01:00
sfahrenholzandGitHub 4266ed9d4a Update Strings.cs
Spelling mistake
2016-12-28 19:16:50 +01:00
Kenneth Skovhede 37622262af Updated managed-lzma and added option to set compression-level for 7z.
This closes #1050.
2015-03-05 21:08:19 +01:00
Kenneth Skovhede 16c791f0b5 Removed all resx files, now using Duplicati.Library.Localization exclusively 2015-01-20 21:07:24 +01:00