Releases: fcorbelli/zpaqfranz
Windows executables and source code
🚀 Release Notes — NTFS Partition Image Support (VHD Mode)
Added
- Support for NTFS partition imaging with VHD restoration
- You can now create NTFS partition images and restore them directly as VHD files, mountable from Windows.
Usage Example
To back up your C:
drive (or any NTFS partition):
zpaqfranz a z:\backup.zpaq C: -image -vhd
Just add -vhd to the usual -image command (* no vss for now, next release...)
The process stores a special backward-compatible format, split into two files:
image_C.fhd
image_C.header
Restoration
To extract and restore as a mountable VHD file:
zpaqfranz x z:\backup.zpaq -vhd
This will generate
image_C.vhd
Notes on Storage and Efficiency
- The resulting .vhd file is not as compact as the zpaqfranz's NTFS-specific image format (-image -ntfs).
- However, it does not require double the disk space for restoration (unlike the ntfs command).
- The output file size corresponds roughly to the actual used space on the original partition.
Example:
A 256 GB NTFS partition with 100 GB of used data will produce a .vhd file of about 100 GB.
Mounting and Extraction
The generated .vhd can be mounted or opened using:
- Windows Disk Management
- FTK Imager
- OSFMount
- Or directly opened with 7-Zip to extract files.
Experimental Feature
This feature is still experimental — a large on-screen warning will appear.
It has not been fully tested yet.
Future versions will include auto-mount support and further refinements.
Integrity Check
To verify that two directories (e.g., G:\data and C:\data) are identical —
for instance, after mounting your .vhd as G: — run:
zpaqfranz sum g:\data -xxh3 -ssd -summary
zpaqfranz sum c:\data -xxh3 -ssd -summary
Tip: Use the -ssd flag only for solid-state drives.
Avoid it on traditional spinning disks.
Tip: extracting huge file on NTFS partition, use -sparse to speed up (a lot)
Windows executables and source code
Added
-
Experimental FRANZEN encrypted format support significantly improved.
- Can be enabled easily during (a) phase using
-franzen password
. - Works with or without the
-key
option. - Encryption can be done:
- Only with FRANZEN, or
- With standard zpaq and then additionally cascaded with FRANZEN.
- Can be enabled easily during (a) phase using
-
New command:
work ispasswordok
- Quickly checks if the password for a
.franzen
file is valid.
- Quickly checks if the password for a
-
New switch:
-memzero
- Wipes FRANZEN data structures from memory.
- Mostly unnecessary in practice (it’s unlikely someone will dump your RAM just to steal your password), but included anyway.
Notes
- The FRANZEN format and its related parameters are still under heavy development.
- They are ABSOLUTELY not suitable for anything beyond experimentation.
- The header does not store the version of
zpaqfranz
used, so there is zero backward compatibility.
As the Italian saying goes: "Uomo avvisato..."
Windows executables and source code
FRANZEN Enhancements
Added
- Experimental FRANZEN function now stores CRC-32 of encrypted file blocks in the header.
- New
work crc32
command for quick integrity checks without requiring the encryption password.
Improved
- CRC-32 computation uses multi-threaded block processing, similar to zpaqfranz.
- Verification function skips the first 140 bytes (128 + 12) and processes the rest efficiently.
- Supports high-speed integrity checks for cloud transmission on standard machines.
Notes
- CRC-32 is not cryptographic; it only provides a fast integrity check.
- Full verification still requires
work test
with the encryption password. - Additional checks are planned for future refinements.
Windows executables and source code
Changelog / Release Notes
SFTP Bandwidth Limitation
SFTP bandwidth limitation, distributed across multiple threads, using the -bandwidth
switch.
New Switches and Features
-sparse
: On Windows, attempts to create a sparse file (typically for NTFS). This can halve the extraction time for gigantic files.-huge
: Uses a different algorithm for file preparation. Useful for few but enormous files on filesystems that do not support sparse files.
Details: Discussion #213
- In the
dir
command, the-nodir
switch now displays only files, excluding folders. - In the
hash
command, a new-norecursion
switch performs as expected (non-recursive hashing). - The
-always
switch forces adding files even if their timestamp has not changed. Conceptually similar to-only
, it can be repeated and used with wildcards.
Compatibility and Performance Improvements
- Enhanced
iswindowsxp
function for improved compatibility (in theory). - Improved wide character support on Windows, including some emojis.
- Rewritten output function (potential for introduced bugs, but refactoring was necessary).
- Most source code comments are now in English.
- Improved local time handling, including for negative UTC offsets (e.g., USA).
- Added support for file hash calculations with an offset (implementation for future FRANZEN testing).
New Functions and Builds
- New
kickstart
function for downloading files from the internet or extracting them (if available) on Windows.
Details: Discussion #205
- Added release of
zpaqfranz-full.exe
(for 64-bit Windows), which includes statically linked resources (useful for offline systems; no other functional differences).
FRANZEN Encryptor
Details: Encode.su Thread
Essentially, this is an early (very immature) version of a future capability to encrypt zpaqfranz files (losing backward compatibility with zpaq) using a different encryption system and a separate password.
In the future (not yet implemented), it will enable double encryption for files: an outer layer (FRANZEN) and an inner layer (standard zpaq). This allows GDPR-compliant cloud storage where the provider knows the outer password, but only the user knows the inner one.
Key feature: Parallel integrity testing of the encrypted file. Instead of single-threaded hashing (reading one byte at a time to compute e.g., SHA-256), FRANZEN reads the encrypted file in blocks, achieving real-world performance exceeding 2GB/s on consumer hardware on non-spinning drives
This is a highly complex topic—treat it as experimental (which it is).
Service Note
I've opened a Discussions area on GitHub for suggestions and requests: zpaqfranz Discussions
Windows executables and source code
Brand new branch (63)
This new release introduces numerous changes, making it a proper new branch.
As is well known, many modifications typically correspond to many new "features"... ahem... bugs, but the new features are very interesting.
New compile-time define -DOPEN
It's now possible to create a version called zpaqfranz-open, completely based on code free from binary portions.
This is designed for environments where security is paramount.
https://github.com/fcorbelli/zpaqfranz/wiki/Security:-open-software
You can achieve a similar result by simply running:
sed -i "/NOSFTPSTART/,/NOSFTPEND/d" zpaqfranz-open.cpp
-keyfile Support
It's now possible to complement the traditional password encryption method (-key something) with the use of a keyfile. This is a file (between 4KB and 50MB) whose hash can be used as an additional key.
Let's proceed step by step:
First, you need to identify a "good" file, one that has sufficiently good entropy.
To do this, you need to verify if it's good enough using the work keyfile command as in the example:
zpaqfranz work keyfile zpaqfranz.cpp
zpaqfranz v63.1p-JIT,SFTP-L,HW BLK3,SHA1/2,4,SFX64 55.1,(2025-08-13)
Entropy: 5.7211 bit/byte : Not suitable — entropy too low, choose a better one
0.015s (00:00:00,512) (with errors)
In this case, the zpaqfranz.cpp file is not good "enough".
What is a "good key file"?
It depends.
Generally, I suggest using a JPG image which, given its storage format, generally has very high entropy and is not easy to replicate exactly (cutted a very long story short)
Here's an example:
C:\zpaqfranz>zpaqfranz work keyfile 01.jpg
zpaqfranz v63.1p-JIT,SFTP-L,HW BLK3,SHA1/2,4,SFX64 55.1,(2025-08-13)
Entropy: 7.7894 bit/byte : Suitable for cryptography
encoded: 5gL9VGz7UyD1nZ8ffPWvGhNM1dm5tKqG38nmkW4L93f7hRFa6xp7KFsU13KWodyDgujhEFSXUPXPdoGs1Lou2kC1
<<01.jpg>>
|01 5: FIVE |19 W: WHISKEY UP|37 k: kilo |55 s: sierra |73 U: UNIFORM UP
|02 g: golf |20 v: victor |38 W: WHISKEY UP|56 U: UNIFORM UP|74 P: PAPA UP
|03 L: LIMA UP|21 G: GOLF UP|39 4: FOUR |57 1: ONE |75 X: XRAY UP
|04 9: NINE |22 h: hotel |40 L: LIMA UP|58 3: THREE |76 P: PAPA UP
|05 V: VICTOR UP|23 N: NOVEMBER UP|41 9: NINE |59 K: KILO UP|77 d: delta
|06 G: GOLF UP|24 M: MIKE UP|42 3: THREE |60 W: WHISKEY UP|78 o: oscar
|07 z: zulu |25 1: ONE |43 f: foxtrot |61 o: oscar |79 G: GOLF UP
|08 7: SEVEN |26 d: delta |44 7: SEVEN |62 d: delta |80 s: sierra
|09 U: UNIFORM UP|27 m: mike |45 h: hotel |63 y: yankee |81 1: ONE
|10 y: yankee |28 5: FIVE |46 R: ROMEO UP|64 D: DELTA UP|82 L: LIMA UP
|11 D: DELTA UP|29 t: tango |47 F: FOXTROT UP|65 g: golf |83 o: oscar
|12 1: ONE |30 K: KILO UP|48 a: alpha |66 u: uniform |84 u: uniform
|13 n: november |31 q: quebec |49 6: SIX |67 j: juliet |85 2: TWO
|14 Z: ZULU UP|32 G: GOLF UP|50 x: xray |68 h: hotel |86 k: kilo
|15 8: EIGHT |33 3: THREE |51 p: papa |69 E: ECHO UP|87 C: CHARLIE UP
|16 f: foxtrot |34 8: EIGHT |52 7: SEVEN |70 F: FOXTROT UP|88 1: ONE
|17 f: foxtrot |35 n: november |53 K: KILO UP|71 S: SIERRA UP
|18 P: PAPA UP|36 m: mike |54 F: FOXTROT UP|72 X: XRAY UP
5gL9 VGz7 UyD1 nZ8f fPWv GhNM 1dm5 tKqG 38nm kW4L
93f7 hRFa 6xp7 KFsU 13KW odyD gujh EFSX UPXP doGs 1Lou 2kC1
THIS KEY IS CRITICAL. Guard it. Losing it means losing your data.
PRIMARY : Print on paper. Store safely offline.
SECONDARY : Save to secure USB drive.
LAST RESORT: Photograph with extreme caution. Avoid cloud auto-upload!
Crucial KEY data copied on clipboard. Please safekeeping!
0.047s (00:00:00,864) (all OK)
If you use a keyfile (by adding -keyfile filename to the zpaqfranz command line), you risk, of course, losing it.
What happens if you lose the file?
You lose everything, because it's like forgetting the password.
Therefore, a "smart" way is to note down the corresponding recovery code, which zpaqfranz shows for this purpose. On Windows, this information is also copied to the clipboard; you can paste it into notepad, for example, or wherever you prefer.
I recommend PRINTING ON PAPER (or copying by hand, even better, but it's quite long) the key code, so you can handle the case where you lose the keyfile.
Obviously, this is not mandatory, it's just your business.
The preservation mechanisms (in order of security) are:
- Copy it by hand, with paper and pen. This is the absolutely safest method
- Print it on paper and store it away
- Save it on a USB drive (or more than one) that you will keep secure
- Last possibility: photograph it with your phone. This is not recommended, as there are MANY automatic backup systems that could upload your key to the cloud without your knowledge
Finally, remember: also use a password. The combination of key+keyfile makes a brute force attack very difficult.
Main Help Information Redesigned
Running zpaqfranz without parameters now shows logically organized help:
zpaqfranz v63.1p-JIT,SFTP-L,HW BLK3,SHA1/2,4,SFX64 55.1,(2025-08-13)
Top tier archiver w/dedup & HW SHA1/2 (C) by Franco Corbelli
Help : zpaqfranz h <command> (single) zpaqfranz h h (full)
Core : a, e, l, x
Backup : backup, g, mysqldump, q
Restore : ntfs, w
Info/list: dirsize, drive, fzf, i, ls, pakka, tui
Test : p, sync, t, testbackup
Cloud : cloud, download, sftp, ssh
File : 1on1, c, cp, d, dir, find, hash, n, r, rd, s, sum
Admin : ads, autotest, b, collision, consolidate, crop, dump, k, m, password, redu, trim, update, upgrade
Utils : checkpassword, comparehex, count, f, isopen, last, last2, pause, rsync, sfx, utf, versum, work, z
Switches : zpaqfranz h main zpaqfranz h common zpaqfranz h franz
Update : zpaqfranz update -force
This facilitates requesting additional help, for example zpaqfranz h a
to get help on the add command.
New SSH Command with sha1sum, md5sum, sha256sum Commands and Switches
It's now possible (lightly tested on *nix) to use the libssh library to remotely execute commands, which for now are hardcoded: -sha1deep, -md5deep, -sha256deep, comparing the results with a local folder.
The command can also be used with the cloud command.
Explanation:
zpaqfranz already performs a quick check between the local file and the one uploaded remotely. This uses the QUICK hash and is therefore executed in a handful of seconds. However, it's not a global, intensive verification and might not detect corruptions.
Using the new command instead, the remote server will calculate (for example) the md5 hashes of the files, and the local zpaqfranz will compare them with those present. This way, I can have near certainty that they are exactly identical.
Currently, md5, sha1, and sha256 are supported. In the future, there will also be more performant ones (e.g., XXH3).
During use, on Windows 64, zpaqfranz downloads the necessary DLL libraries from my site, placing them in the executable folder.
-franzhash in Hash Command
A scenario that can occur is having to compare the hash of a very large local file residing on a solid-state disk with a remote one that instead resides on a magnetic disk, or having terabyte+ files on solid-state to be checked.
This is the practice of cloud backups for virtual machines.
In this example, I'm calculating with 4 threads (-t4) and -sha256 the franzhash of the file j:\win11.zpaq:
Remember: -t4!
C:\zpaqfranz>zpaqfranz hash j:\win11.zpaq -franzhash -sha256 -t4
zpaqfranz v63.1p-JIT,SFTP-L,HW BLK3,SHA1/2,4,SFX64 55.1,(2025-08-13)
franzhash: parallel run 8.21 GB (NVMe/RAID of SSDs, multicore CPU)
100.00% ETA 00:00:00 8.21 GB @ 4.04 GB/s
franzhash:SHA-256:4:c:2204732550:5r^hm6S^Se1dOMq3AWN^0LIZb6o@7f6:E[f3A`NN0fV*]6SpPb1IO&T681b\3&!WU7RB$f1dj)W6T@D$
2.031s (00:00:02,4.00MB) (all OK)
The result I obtained is visible in the second-to-last line.
SHA-256:4:
Note: SHA-256 and 4 are indicated, i.e., the number of parts (fundamental information).
Now if I want to check this file hash (for example, by running the check on a remote server), I must use EXACTLY this information: sha256 and 4 parts, but enforcing -frugal.
This will recalculate the hash but without using multithreading (therefore for magnetic disks. On solid state, just do not use -frugal)
Example:
zpaqfranz hash j:\win11.zpaq -franzhash -sha256 -t4 -frugal -terse
This is an extremely specialized topic. Let's say it's to maximize hash checking speed for both magnetic and solid-state disks.
By using powerful CPUs (multicore), hardware acceleration (AMD), and fast storage devices (NVMe Gen 5), it's not uncommon to reach real-world performance in the 5–8 GB/s range.
Clearly, this is not a cryptographically robust test like the standard sequential calculation, but it can boost performance by a factor of 4 or more — which makes a real difference when dealing with huge files (in the multi-terabyte range).
Work in progress
Help Info Reworked
Help management is being redesigned, both from an aesthetic and content perspective. It's very long and heavy work, but I work on it in my free time.
Win64: Virtual Memory "Supercache" Mechanism
The zpaq format inherently provides that output is random, meaning that archives, during the extraction phase, are read sequentially, but decompressed files are written (generally) NOT sequentially, but with head seeks.
This is not a problem using solid-state units (SSD/NVMe), but it can become one for magnetic disks, such as slow external USB units.
zpaqfranz al...
Windows executables and source code
New cloud
command (developed on Windows, not yet tested on other systems)
This is a groundbreaking innovation.
It essentially performs backups and uploads them to an SFTP server in an "intelligent" way.
It also supports an external program/script to send logs via email, with full privacy support (removing |STAT|
lines containing file names).
The best way to get started is:
zpaqfranz h cloud
Once thoroughly tested on non-Windows systems, a comprehensive guide will be published on the GitHub wiki.
Sets error level and exits if seterrorlevelX
is passed via command line
New mkdir
verb for SFTP
New checkpassword
command to test password validity
Heuristic search for libcurl
library (dylib) on Macintosh
Displays various commands to install libcurl
if it cannot be found
Fallback if SFTP SSH key file is missing but a password is provided
testbackup
now supports filenames in the format _????????.zpaq
Fixed file extraction in TUI, removing ":" from filenames
Improved versum
output
New -comment
switch for pause
to customize the prompt
Shortened reminder about using double quotes
Improved detection of output redirection
No longer hangs when -silent
is used and a password is requested
Various output improvements
Replaced advanced C++ constructs for better compatibility
New verbs for work
devart-red
, devart-green
, devart-yellow
, devart-cyan
print colored text
getsize
reports the size of one or more files
Windows executables and source code
New sync
command
This command compares the content of an archive, or one of its subfolders, with a filesystem.
It is generally recommended to use absolute paths rather than relative ones.
It essentially serves two purposes:
- Test or verification: After performing an archive with the
a
command, a "heavy" verification can be done with thesync
command (use-quick
to skip hash checking and only compare sizes, or-ssd
to enable multithreading on non-rotational disks). - Estimate data: Estimate how much data would be archived if an update for a new version were performed.
It differs from thev
(verify) command because it also shows new files not present in the archive and those that are missing.
Multithread support for the t
(test) command
It is now possible to use all cores in the second phase (CRC-32 reconstruction).
This has no significant impact if there are few archived files (e.g., a single virtual disk image), but it can reduce processing time by up to ten times in optimal cases (e.g., millions of small files, such as on a file server).
Note: This feature is not extensively tested.
Default progress is now displayed at one-second intervals
Instead of updating based on ETA changes, this reduces console impact for very large jobs.
Attempt (harder) to restore text color when pressing Ctrl+C
Using -stat
adds |STAT|
to output lines
This facilitates the removal of sensitive information for privacy purposes (e.g., using grep
, awk
, etc.) when sending logs via email.
Renamed the key file for the sftp
command to -ssh
Further refactoring, likely introducing new bugs
Various minor internal improvements
Windows executables and source code
Version Number Change for Macintosh Users
To address an issue affecting Homebrew users on Macintosh who were "stuck" due to a versioning error, a significant version number increment has been implemented.
This should resolve the issue for those users.
If you see version 62.3 instead of 61.7, know that it’s for a good cause.
Internal Changes to Reduce False Positives in Kaspersky and Other Antivirus Software
Various program analysis systems use heuristics to detect viruses.
After reverse-engineering Kaspersky’s detection methods, which flagged false positives for some versions of zpaqfranz, I introduced source code fixes.
Unfortunately, due to known reasons, Kaspersky is no longer installed on any of my machines, so I hadn’t noticed this earlier.
Autotest Command: Default Quick Hash Check for Moderate File Sizes
The autotest
command now performs a quick hash check by default, even for moderately sized files.
This should help detect errors like hexadecimal conversion issues.
Autotest Command: Additional Information with -all
Switch
The autotest
command now displays additional details when using the -all
switch, particularly the execution time of operations.
This is useful for performance comparisons.
Info Command (i
): File Size Display for Encrypted Files
The i
(info) command now shows the file size (or sizes for multipart archives) including the additional 32 bytes for encrypted versions.
For example, if an archive is 10,000 bytes but encrypted, the actual size is 10,032 bytes, and this is now displayed.
SFTP Command: Support for Key-Based Authentication
The sftp
command now supports the -key
option to use keys for connecting to an SFTP server.
Significant changes to the SFTP interface are ongoing, with plans to make it the primary interface for ransomware-resistant systems in the future.
SFTP Command: Bandwidth Limiting for Uploads
The sftp
command now allows limiting the total upload bandwidth using the -bandwidth
switch.
Note that this limit is divided by the number of threads if using -ssd
. For example, setting a 100K limit with 10 threads results in a 10K limit per thread.
Use -tX to cap to X threads (with -ssd)
Fixed a Specific Case in the t
Command for CRC32 Block Recalculation
A particular issue with the t
command for recalculating CRC32 blocks has been addressed.
This should resolve the issue permanently.
Who knows.
In the future, a multithreaded checker might be developed.
Refactoring from Static Analysis
Static analysis refactoring has been performed.
While I hope it hasn’t introduced too many bugs, issues are possible.
Compilation tests were limited to two environments (Windows and Debian).
Full certification across all platforms will wait until the SFTP module is further developed.
Windows executables and source code
Fixed a refactoring bug (reverse hex)
Release Notes
There are many new features in this build, so particular attention should be paid to the possibility of new bugs being introduced.
Main Change
The primary change is the overhaul of the interface with CURL and the management of SFTP commands, which now (mostly) support the -ssd
switch for parallel operations.
Translation
The main challenge in comparing a local backup with a remote one is the difficulty of remotely recalculating the hashes of archives (support for this will be added in the future), especially given the large size of backups (hundreds of files, hundreds of gigabytes).
zpaqfranz supports the QUICK hasher, which, for files larger than 64KB, calculates the XXHASH64 hash of the first 16KB, the last 16KB, and 16KB from the middle of the file.
The purpose is to reduce the risk of data alignment issues, such as those caused by failed rsync --append
operations.
While this is not a perfect test, nor cryptographically secure, it is fast.
In just a couple of minutes, it can reliably check hundreds of gigabytes, which would be impossible with traditional methods.
As mentioned, in the future, I plan to implement support for a "hardcore" comparison using MD5 on systems that support it, for example, for weekly verifications.
By using multiple concurrent SFTP threads (which has high latency), systems with magnetic disks can also be checked quickly.
Naturally, the number of threads should not be excessive (a limit of 99 has been set).
Generally, the number of CPU cores is sufficient (typically 4 to 16).
You can adjust this using the -tX
option, where X
is the number of threads you want.
During multiple uploads, information for each thread is displayed in a somewhat rough manner (for now), tested only on Windows.
There are no specific checks for console size or similar, so you'll have to make do.
In the future, I plan to make the graphical aspects more robust.
In summary, the 1on1
SFTP command with the -ssd
switch is a groundbreaking innovation (provided I can get it to work well!) for those managing very large backups.
Of course, if your archive is only a few gigabytes, this issue is less relevant.
Supported commands for sftp
- upload: Uploads a single file to SFTP.
- verify: Quickly compares a local file to a remote file.
- quick: Retrieves the QUICK hash of a remote file.
- ls: Lists the contents of a remote folder.
- delete: Deletes a remote file.
- size: Retrieves the size of a remote file.
- rsync: Performs an rsync-like operation to sync local files to a remote folder (
-ssd
supported).-force
: Prevents appending.
- 1on1: Quickly compares local files to a remote folder (
-ssd
supported).
New Switches
- -appendoutput: Appends data to the
-out
file instead of recreating it each time. - -writeonconsole: Writes output to stderr, allowing data to be displayed on the console even when redirected.
- -last: Operates on the last file in a selection, typically used for the last part of a multipart archive.
- -home: Now works with the
l
(list) command, showing the sizes of virtual folders inside an archive at one level deep.
Other Additions
- Introduced
work devart
for highly visible on-screen text. - In the
utf
command, the-fix255
switch checks the maximum length of specified file names withmaxsize
. - New
drive
command on Windows: Displays the list of connected physical disks with their respective numbers. - The
-all
switch (with-image
) on Windows operates on an entire disk image, similar todd
, rather than a single partition. - New commands:
work datebig
andwork datetimebig
.
Additional Features
It is now possible to extract only the files added in a specific version, marked with a textual comment, using the following example format:
c:\zpaqfranz\zpaqfranz x z:\2.zpaq -to z:\wherever -comment "something" -range
Miscellaneous Changes
- Improved OpenBSD support.
- On Windows,
decodewinerror
is no longer hardcoded (now respects the local language). - Fixed the
test
command to address occasional false positives. - Improved alignment of help text lines.
- Removed comments from the CURL library and unused defines.
Additional Notes
- Reduced the size of the source code.
Windows 32 (XP)/64 binaries, 64 bit-HW accelerated
- Many features in this release (e.g., -image
, -ntfs
, ntfs
command, work resetacl
) are experimental and not fully tested. Use with caution and report issues.
Added
For *nix (Linux, etc.)
-image
Switch: Added to thea
(add) command to create a sector-by-sector copy of a device, similar to thedd
command.- Restored images can be mounted on Linux using a snippet like:
fdisk -l image.img losetup -fP _dev_sda.img losetup -a mkdir -p /ripristinato mount /dev/loop0p1 /ripristinato (...) umount /ripristinato losetup -d /dev/loop0
- Experimental feature; not thoroughly tested.
- Restored images can be mounted on Linux using a snippet like:
-tar
Switch: Available during archive creation (a
) and extraction (x
) to preserve file access rights, group, and user metadata.- When used with the
l
(list) command, displays the added metadata. - Simplifies metadata restoration for *nix systems.
- When used with the
- Improved ZFS Backup Handling: Enhanced automatic integration with
pv
for better user feedback on backup progress during ZFS operations.
For Windows
-ntfs
Switch: When used with-image
, stores only the used sectors of an NTFS partition in the zpaq archive.- Format is experimental and not yet optimized.
- Intended for emergency image-based backups of Windows systems.
- New
ntfs
Command: Regenerates the original file from a zpaqfranz-created image, filling unused sectors with zeros.- Experimental and under active development.
-ntfs
Switch (without-image
): Scans an NTFS drive by reading and decoding its NTFS data directly, bypassing file-by-file enumeration.- Similar to the behavior of the "Everything" utility.
- Significantly speeds up file enumeration on large, slow servers with magnetic disks.
- New
work resetacl
Command: Generates a batch file to reset folder permissions to administrators.- Useful for normalizing access after restoring NTFS folders with restricted permissions.
- Experimental; intended to address post-restore access issues.
Changed
- Code Refactoring: Reduced compilation warnings for both Windows and *nix platforms.
- Dropbox Cache Handling: Skips
.dropbox.cache
folders during operations to avoid unnecessary processing. - Command Path Detection (*nix): Adopted a smarter strategy to locate *nix commands in likely directories, improving reliability.
Notes
- The
-ntfs
switch is designed for specific use cases like large server enumeration or emergency backups but may evolve in future releases. - The
-tar
switch enhances metadata handling for *nix, making it easier to restore complex file permissions. - The
pv
integration for ZFS backups improves user experience but requirespv
to be installed. - Feedback and bug reports are welcome via GitHub issues.