Files
uc2/cli/uc2.1
Eremey Valetov efd41dceb1 add uc2.1 man page and install rules
mdoc man page covering all modes and the OTS/ingest long options,
verified with groff and NetBSD mandoc. CMake installs the binary and
the man page (guarded against add_subdirectory embedding). Also
corrects the stale direction-1 comment in the DOSBox round-trip
script: multi-file archives created by v3 have extracted fine in the
original since the custom-Huffman-tree fix.
2026-06-11 15:17:50 -04:00

184 lines
4.6 KiB
Groff

.\" SPDX-License-Identifier: GPL-3.0-or-later
.Dd June 11, 2026
.Dt UC2 1
.Os
.Sh NAME
.Nm uc2
.Nd UltraCompressor II archiver
.Sh SYNOPSIS
.Nm
.Op Fl afpqDT
.Op Fl C Ar directory
.Op Fl d Ar destination
.Ar archive.uc2
.Op Ar file ...
.Nm
.Fl l
.Op Fl aqT
.Ar archive.uc2
.Op Ar file ...
.Nm
.Fl t
.Op Fl aq
.Ar archive.uc2
.Op Ar file ...
.Nm
.Fl w
.Op Fl q
.Op Fl L Ar level
.Ar archive.uc2
.Ar file ...
.Nm
.Fl B
.Ar file ...
.Nm
.Fl -ots-attach Ar proof.ots
.Op Fl f
.Ar archive.uc2
.Nm
.Fl -ots-extract
.Ar archive.uc2 out.ots
.Nm
.Fl -ots-info
.Ar archive.uc2
.Nm
.Fl -ingest Ar archive
.Nm
.Fl -ingest-restore Ar archive
.Sh DESCRIPTION
.Nm
is a cross-platform revival of UltraCompressor II, the MS-DOS archiver
published by Nico de Vries (AIP-NL) between 1992 and 1996.
It reads and writes the original UC2 archive format byte-compatibly:
archives created by the original
.Pa uc2pro.exe
extract correctly, and archives created at compression levels 2 through 5
can be read by the original DOS program.
.Pp
Without a mode option,
.Nm
extracts the named archive into the current directory (or into the
directory given with
.Fl d ) .
If
.Ar file
arguments are given, only matching entries are processed; shell-style
wildcards are accepted.
.Pp
Compression levels 2 through 5 use the original LZ77 and Huffman
bitstream.
Levels 6 through 9 replace the entropy stage with rANS coding for
better ratios; such archives require
.Nm
version 3 and cannot be read by the original DOS program.
Files with similar content are grouped and compressed against shared
master blocks, the deduplication scheme UC2 introduced in 1992.
.Sh OPTIONS
.Bl -tag -width Ds
.It Fl a
Process all stored versions of each file, not only the most recent.
.It Fl B
Benchmark every compression method on the given input files and print
a comparison table; no archive is written.
.It Fl C Ar directory
Change to
.Ar directory
before reading or writing any files.
Applies in every mode.
.It Fl c , Fl p
Write extracted data to standard output instead of creating files.
.It Fl D
Do not restore modification times and permissions of directories.
Given twice, file metadata is not restored either.
.It Fl d Ar destination
Extract into
.Ar destination
instead of the current directory.
.It Fl f
Overwrite existing files when extracting, and allow
.Fl -ots-attach
to replace an existing proof.
.It Fl h
Print version, usage, and option summary.
.It Fl L Ar level
Select the compression level for
.Fl w :
2 (Fast), 3 (Normal), 4 (Tight, the default), 5 (Ultra) for the
backward-compatible Huffman methods, or 6 through 9 for rANS.
.It Fl l
List the archive contents.
.It Fl q
Quiet operation; suppress status messages.
.It Fl T
Separate listing columns with tabs instead of spaces.
.It Fl t
Test archive integrity without writing any files.
.It Fl w
Create (write) an archive from the given files and directories.
.It Fl x
Extract; this is the default mode.
.El
.Pp
The long options operate on OpenTimestamps proofs and the streaming
deduplication store:
.Bl -tag -width Ds
.It Fl -ots-attach Ar proof.ots
Attach an OpenTimestamps proof to the archive after verifying that the
proof commits to the archive contents.
The proof is stored in a trailer that the original DOS program ignores.
.It Fl -ots-extract
Write the attached proof to the named output file, suitable for
.Ql ots verify .
.It Fl -ots-info
Describe the attached proof.
.It Fl -ingest Ar archive
Read a data stream from standard input into a content-addressed
deduplicating block store inside
.Ar archive .
.It Fl -ingest-restore Ar archive
Write the ingested stream from
.Ar archive
to standard output.
.El
.Sh EXIT STATUS
.Ex -std
.Sh EXAMPLES
Create an archive at the default level and list it:
.Bd -literal -offset indent
$ uc2 -w backup.uc2 project/ notes.txt
$ uc2 -l backup.uc2
.Ed
.Pp
Extract it elsewhere, overwriting existing files (the destination
directory must exist):
.Bd -literal -offset indent
$ mkdir -p /tmp/restore
$ uc2 -f -d /tmp/restore backup.uc2
.Ed
.Pp
Create a smaller archive readable only by
.Nm
version 3, then verify it:
.Bd -literal -offset indent
$ uc2 -w -L 9 backup.uc2 project/
$ uc2 -t backup.uc2
.Ed
.Sh HISTORY
UltraCompressor II was written by Nico de Vries at AIP-NL and sold as
shareware from 1992 to 1996.
De Vries re-released the original source under the LGPL in 2015; Jan
Bobrowski's libunuc2 (2020) built a portable decompressor from it.
.Nm
version 3 builds on that lineage as a full reimplementation in C99,
maintained by Eremey Valetov.
.Sh AUTHORS
.An Nico de Vries
(original UltraCompressor II),
.An Jan Bobrowski
(libunuc2),
.An Eremey Valetov Aq Mt evaletov@protonmail.com
(version 3).
.Pp
Source and issue tracker:
.Lk https://github.com/evvaletov/uc2