zpaqfranz - Man Page

Swiss army knife for backup and disaster recovery

Synopsis

zpaqfranz command archive[.zpaq] [files|directory]... [-switches]...

Description

zpaqfranz is like 7z or RAR on steroids, with versions/"snapshots"

 Conceptually similar to Mac time machine, but much more efficiently
 Keeps backup always-to-always, no need to ever prune (CryptoLocker)
 Easily handles millions of files and TBs of data, non-latin support
 Cloud backups with full encryption, minimal data transfer/bandwidth
 Data integrity check CRC32+XXHASH|SHA-1|SHA-2|SHA-3|MD5|XXH3|BLAKE3
 Thorough data verification, multithread support (real world 1GB+/s)
 Specific zfs handling functions,full multiplatform interoperability
 Particularly suitable for minimal space storage of virtual machines

 Windows, FreeBSD, OpenBSD, Linux, MacOS, Solaris, OmniOS and others

Commands

archive assume by default a .zpaq extension.

If archive contains wildcards * or ?, then the archive is multipart, where * matches the part number and ? matches single digits. The concatenation starts from 1.
For example, arc?? would match the concatenation of
arc01.zpaq,
arc02.zpaq,
arc03.zpaq (...)
until the last one.
DO NOT FORGET THE DOUBLE QUOTEs!

The help is embedded : please use that or read the wiki on github

 zpaqfranz           : short version
 zpaqfranz h         : list of commands and switches
 zpaqfranz h h       : help on everything (ALL IN)
 Help     on XXX     : zpaqfranz h   XXX
 Examples of XXX     : zpaqfranz -he XXX

 XXX can be a COMMAND
 1on1                : Delete folder2's files with same name/hash of folder1
 a                   : Add or append files to archive
 autotest            : Autotest for hidden errors after compiling from source
 b                   : CPU benchmark, speed index in (yes!) franzomips
 backup              : Backup with hardened multipart
 c                   : Compare one master dir against one or more slave dir(s)
 consolidatebackup   : Consolidate multipart backup
 cp                  : Friendly file copy with ETA (resumable)
 d                   : Deduplicate files inside a single folder WITHOUT MERCY
 dir                 : A better dir (yes, Windows' dir)
 dirsize             : Show cumulative folder(s) size
 e                   : Extract file(s) on current folder
 f                   : Free disk space fill (=reliability test) or wipe (privacy)
 find                : Search file(s) with wildcards
 fzf                 : List archive filenames 'plain-and-dirty'
 i                   : File (archive) information
 isopen              : Check if a file isopen (by other software)
 k                   : Kill (delete) everything not in archive (RISKY!)
 l                   : List file(s)
 last                : Get last multipart filename
 last2               : Compare last2 rows
 m                   : Merge (consolidate) multipart archive into one
 n                   : Decimate (keeping the newer X) older files
 p                   : Paranoid test (slow, lot of RAM needed)
 password            : Change/remove password of single archive (no multipart)
 pause               : Halt script execution until time or keypress
 r                   : Robocopy one master to multiple slave folders
 rd                  : Remove hard-to-delete Windows' folder (ex. path too long)
 rsync               : Delete rsync's dangling temporary files
 s                   : Get dir(s) size, return free disk space
 sum                 : Calc hash/checksums, find duplicated files
 t                   : Test archive integrity
 testbackup          : Multipart hardening
 trim                : Trim .zpaq archive from incomplete transaction
 utf                 : Convert filenames to latin, fix too long filenames etc
 v                   : Verify archive (against filesystem)
 versum              : Hashdeep-like double check of hashes
 w                   : Chunked extraction/test of very big files
 x                   : Extract file(s)
 z                   : Remove empty directories
 zfsadd              : Freeze zfs' snapshots inside archive
 zfsbackup           : Backup of zfs' streams
 zfslist             : List zfs' snapshots with wildcard
 zfsproxbackup       : Backup of proxmox on zfs
 zfsproxrestore      : Restore of proxmox on zfs
 zfspurge            : Purge snapshots with wildcards
 zfsreceive          : Restore (with zfs) from zpaq archive
 zfsrestore          : Restore from extracted .zfs stream

Options

 Embbedded help on optional switches

 zpaqfranz h main    : main switches
 zpaqfranz h franz   : zpaqfranz's switches
 zpaqfranz h normal  : 2nd line switches
 zpaqfranz h voodoo  : nerd things

Exit Status

0=successfull, 1=warning, 2=error

Availability

 https://github.com/fcorbelli/zpaqfranz
 https://sourceforge.net/projects/zpaqfranz/

Bugs

 Provided as-is, with no warranty whatsoever.

Environment

 Running on "weird things" requires compiling with the right switches 
 -DNOJIT           : Not-Intel CPU (ex. Apple M1/M2, ARM...)
 -DSOLARIS         : Solaris-based OS
 -DANCIENT         : Very old system (cheap NAS...)
 -DBIG             : BIG ENDIAN
 -DESX             : ESXi server
 -DALIGNMALLOC     : Enforce mem alignment (sparc64...)
 -DHWSHA2          : Enable HW SHA support (Ryzen...)

 Use the autotest command if necessary.
 
 If the executable is named "dir" act (just about)... like Windows' dir

 If the executable is named "robocopy" runs... some kind of robocopy-like
 WET RUNS (-kill automagically enabled), with -space enabled.
 ex robocopy /tmp/zp /tmp/backup1 /tmp/backup2

Limitations

 zpaqfranz currently does not store owner/group (it will be in the future).
 If you really need you must use tar.
 
 "Strange" systems with little memory (NAS, ESX servers...) can crash.

Features

 zpaqfranz supports -stdin and -stdout (zpaq does not)

See Also

bzip2(1) gzip(1) p7zip(1) rar(1) unzip(1) zip(1) zpaq(1)

Authors

This is a fork of zpaq 7.15 (released to public domain by Matt Mahoney) made by Franco Corbelli and released under MIT in 2021-2023.

Licenses of various software (more details in the source code)

Public domain for zpaq, libzpaq, AES from libtomcrypt by Tom St Denis,salsa20 by D. J. Bernstein, mod by data man and reg2s patch from encode.su forum Sha1Opt.asm, 7zAsm.asm by Igor Pavlov, PDCursesMod and SHA-Intrinsics; MIT for Code from libdivsufsort 2.0 (C) Yuta Mori, 2003-2008, Embedded Artistry, Nilsimsa implementation by Sepehr Laal; zlib for Crc32.h Copyright (c) 2011-2019 Stephan Brumme, part of hash-library (MD5, SHA-3), crc32c.c Copyright (C) 2015 Mark Adler; The Unlicense for wyhash (experimental) by WangYi; BSD 2 for xxHash Copyright (C) 2012-2020 Yann Collet; CC0 1.0 / Apache License 2.0 for the BLAKE3 hasher and HighWay64 hasher; Nothing explicit, seems BSD for Whirlpool by Paulo Barreto and Vincent Rijmen; almost-unrestricted Twofish implementation by Niels Ferguson.

EXAMPLE 1 create a temporary file, add /etc to mybackup.zpaq

 echo test_ONE >/etc/testfile.txt
 zpaqfranz a /tmp/mybackup.zpaq /etc

EXAMPLE 2 create another version (“snapshot”) with different content

 echo test_TWO_FILE_LONGER_THAT_THE_FIRST >/etc/testfile.txt
 zpaqfranz a /tmp/mybackup.zpaq /etc

EXAMPLE 3 show archive info (two versions/“snapshots”, 1 and 2)

 zpaqfranz i /tmp/mybackup.zpaq

EXAMPLE 4 list the two different versions (look at different file size)

 zpaqfranz l /tmp/mybackup.zpaq -find testfile.txt -until 1
 zpaqfranz l /tmp/mybackup.zpaq -find testfile.txt -until 2

EXAMPLE 5 restore the first version of /etc/testfile.txt (aka: rollback to “snapshot” #1)

 zpaqfranz x /tmp/mybackup.zpaq /etc/testfile.txt -to /tmp/restoredfolder/the_first.txt -until 1 -space
 cat /tmp/restoredfolder/the_first.txt

Info

2024-10-25 perl v5.40.0 User Contributed Perl Documentation