man zoo Command

Man page for apt-get zoo Command

Man Page for zoo in Linux

Ubuntu Man Command : man zoo

Man Zoo  Command

This tutorial shows the man page for man zoo in linux.

Open terminal with 'su' access and type the command as shown below:
man zoo

Result of the Command Execution shown below:

ZOO(1)                                                                  ZOO(1)

zoo manipulate archives of files in compressed form

zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+ =] archive [file]
zoo command archive [file] ...
zoo h

Zoo is used to create and maintain collections of files in compressed
form. It uses a Lempel Ziv compression algorithm that gives space sav
ings in the range of 20% to 80% depending on the type of file data.
Zoo can store and selectively extract multiple generations of the same
file. Data can be recovered from damaged archives by skipping the dam
aged portion and locating undamaged data with the help of fiz(1).

This documentation is for version 2.1. Changes from previous versions
are described in the section labelled CHANGES.

The command zoo h gives a summary of commands. Extended multiscreen
help can be obtained with zoo H.

Zoo will not add an archive to itself, nor add the archive's backup
(with .bak extension to the filename) to the archive.

Zoo has two types of commands: Expert commands, which consist of one
command letter followed by zero or more modifier characters, and Novice
commands, which consist of a hyphen (` ') followed by a command word
that may be abbreviated. Expert commands are case sensitive but Novice
commands are not.

When zoo adds a file to an existing archive, the default action is to
maintain one generation of each file in an archive and to mark any
older generation as deleted. A limit on the number of generations to
save can be specified by the user for an entire archive, or for each
file individually, or both. Zoo deletes a stored copy of an added file
if necessary to prevent the number of stored generations from exceeding
the user specified limit.

Deleted files may be later undeleted. Archives may be packed to
recover space occupied by deleted files.

All commands assume that the archive name ends with the characters .zoo
unless a different extension is supplied.

Novice commands

Novice commands may be abbreviated to a hyphen followed by at least one
command character. Each Novice command works in two stages. First,
the command does its intended work. Then, if the result was that one
or more files were deleted in the specified archive, the archive is
packed. If packing occurs, the original unpacked archive is always
left behind with an extension of .bak.

No Novice command ever stores the directory prefix of a file.

The Novice commands are as follows.

add Adds the specified files to the archive.

Adds a specified file to the archive if and only if an older
file by the same name already exists in the archive.

Deletes the specified files from the archive.

Adds a specified file to the archive either: if an older file
by the same name already exists in the archive or: if a file by
the same name does not already exist in the archive.

Extracts the specified files from the archive. If no file is
specified all files are extracted.

move Equivalent to add except that source files are deleted after

print Equivalent to extract except that extracted data are sent to
standard output.

list Gives information about the specified archived files including
any attached comments. If no files are specified all files are
listed. Deleted files are not listed.

test Equivalent to extract except that the extracted data are not
saved but any errors encountered are reported.

Allows the user to add or update comments attached to archived
files. When prompted, the user may: type a carriage return to
skip the file, leaving any current comment unchanged; or type a
(possibly null) comment of up to 32,767 characters terminated by
/end (case insensitive) on a separate line; or type the end of
file character (normally control D) to skip all remaining files.

Deletes the specified files.

The correspondence between Novice and Expert commands is as follows.

Novice Equivalent
Command Description Expert Command

add add files to archive aP:
extract extract files from archive x
move move files to archive aMP:
test test archive integrity xNd
print extract files to standard output xp
delete delete files from archive DP
list list archive contents VC
update add new or newer files aunP:
freshen by add newer files auP:
comment add comments to files c

Expert commands

The general format of expert commands is:

zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+ =] archive [file]

The characters enclosed within {} are commands. Choose any one of
these. The characters enclosed within [] just to the right of the {}
are modifiers and zero or more of these may immediately follow the com
mand character. All combinations of command and modifier characters
may not be valid.

Files are added to an archive with the command:

zoo {au}[cfhIMnPqu:+ ] archive [file] ...

Command characters are:

a Add each specified file to archive. Any already archived copy
of the file is deleted if this is necessary to avoid exceeding
the user specified limit on the number of generations of the
file to maintain in the archive.

u Do an update of the archive. A specified file is added to the
archive only if a copy of it is already in the archive and the
copy being added is newer than the copy already in the archive.

The following modifiers are specific to these commands.

M Move files to archive. This makes zoo delete (unlink) the orig
inal files after they have been added to the archive. Files are
deleted after addition of all files to the archive is complete
and after any requested packing of the archive has been done,
and only if zoo detected no errors.

n Add new files only. A specified file is added only if it isn't
already in the archive.

h Use the high performance compression algorithm. This option may
be used with either the add (a) or filter (f) commands to gain
extra compression at the expense of using somewhat more proces
sor time. Extracting files compressed with the method is usually
slightly faster than those saved with the default method.

P Pack archive after files have been added.

u Applied to the a command, this modifier makes it behave identi
cally to the u command.

The combination of the n modifier with the u modifier or u com
mand causes addition of a file to the archive either if the file
is not already in the archive, or if the file is already in the
archive but the archived copy is older than the copy being

: Do not store directory names. In the absence of this modifier
zoo stores the full pathname of each archived file.

I Read filenames to be archived from standard input. Zoo will
read its standard input and assume that each line of text con
tains a filename. Under AmigaDOS and the **IX family, the
entire line is used. Under MS DOS and VAX/VMS, zoo assumes that
the filename is terminated by a blank, tab, or newline; thus it
is permissible for the line of text to contain more than one
field separated by white space, and only the first field will be

Under the **IX family of operating systems, zoo can be used as
follows in a pipeline:

find . print | zoo aI sources

If the I modifier is specified, no filenames may be supplied on
the command line itself.

+, These modifiers take effect only if the a command results in the
creation of a new archive. + causes any newly created archive
to have generations enabled. is provided for symmetry and
causes any newly created archive to have generations disabled;
this is also the default if neither + nor is specified.

Files are extracted from an archive with the command:

zoo {ex}[dNoOpqS./@] archive [file] ...

The e and x commands are synonymous. If no file was specified, all
files are extracted from the archive.

The following modifiers are specific to the e and x commands:

N Do not save extracted data but report any errors encountered.

O Overwrite files. Normally, if a file being extracted would
overwrite an already existing file of the same name, zoo asks
you if you really want to overwrite it. You may answer the
question with `y', which means yes, overwrite; or `n', which
means no, don't overwrite; or `a', which means assume the answer
is `y' for this and all subsequent files. The O modifier makes
zoo assume that files may always be overwritten. Neither
answering the question affirmatively nor using O alone will
cause read only files to be overwritten.

On **IX systems, however, doubling this modifier as OO will
force zoo to unconditionally overwrite any read protected files
with extracted files if it can do so.

The O, N, and p modifiers are mutually exclusive.

S Supersede newer files on disk with older extracted files.
Unless this modifier is used, zoo will not overwrite a newer
existing file with an older extracted file.

o This is equivalent to the O modifier if and only if it is given
at least twice. It is otherwise ignored.

p Pipe extracted data to standard output. Error messages are
piped to standard output as well. However, if a bad CRC is
detected, an error message is sent both to standard error and to
standard output.

/ Extract to original pathname. Any needed directories must
already exist. In the absence of this modifier all files are
extracted into the current directory. If this modifier is dou
bled as //, required directories need not exist and are created
if necessary.

The management of multiple generations of archived files is done with
the commands:

zoo gl[Aq]{+ =}number archive files ..
zoo gc[q]{+ =}number archive files ..
zoo gA[q] archive
zoo gA[q]+ archive

The first form, gl, adjusts the generation limit of selected files by
the specified value. If the form =n is used, where n is a decimal num
ber, this sets the generation limit to the specified value. If + or
are used in placed of = the effect is to increment or decrement the
generation limit by the specified value. For example, the command

zoo gl=5 xyz :

sets the generation limit of each file in the archive xyz.zoo to a
value of 5. The command

zoo gl 3 xyz :

decrements the generation limit of each file in the archive to 3 less
than it currently is.

If the A modifier is used, the archive wide generation limit is
adjusted instead.

The number of generations of a file maintained in an archive is limited
by the file generation limit, or the archive generation limit, which
ever is lower. As a special case, a generation limit of 0 stands for
no limit. Thus the default file generation limit of 0 and archive gen
eration limit of 3 limits the number of generations of each file in a
newly created archive to three.

The generation limit specified should be in the range 0 through 15;
any higher numbers are interpreted modulo 16.

The second form of the command, using gc, adjusts the generation count
of selected files. Each file has a generation count of 1 when it is
first added to an archive. Each time a file by the same name is added
again to an archive, it receives a generation count that is one higher
than the highest generation count of the archived copy of the file.
The permissible range of generation counts is 1 through 65535. If
repeated manipulations of an archive result in files having very high
generation counts, they may be set back to lower numbers with the gc
command. The syntax of the command is analogous to the syntax of the
gl command, except that the A modifier is not applicable to the gc com

The third form, gA , disables generations in an archive. Generations
are off when an archive is first created, but may be enabled with the
fourth form of the command, gA+. When generations are disabled in an
archive, zoo will not display generation numbers in archive listings or
maintain multiple generations. Generations can be re enabled at any
time, though manipulation of an archive with repeated interspersed gA
and gA+ commands may result in an archive whose behavior is not easily

Archived files are listed with the command:

zoo {lLvV}[aAcCdfgmqvV@/1+ ] archive[.zoo] [file] ...

l Information presented includes the date and time of each file,
its original and current (compressed) sizes, and the percentage
size decrease due to compression (labelled CF or compression
factor). If a file was added to the archive in a different
timezone, the difference between timezones is shown in hours as
a signed number. As an example, if the difference is listed as
+3, this means that the file was added to the archive in a time
zone that is 3 hours west of the current timezone. The file
time listed is, however, always the original timestamp of the
archived file, as observed by the user who archived the file,
expressed as that user's local time. (Timezone information is
stored and displayed only if the underlying operating system
knows about timezones.)

If no filename is supplied all files are listed except deleted

Zoo selects which generation(s) of a file to list according to
the following algorithm.

If no filename is supplied, only the latest generation of each
file is listed. If any filenames are specified, and a genera
tion is specified for an argument, only the requested generation
is listed. If a filename is specified ending with the genera
tion character (`:' or `;'), all generations of that file are
listed. Thus a filename argument of the form zoo.c will cause
only the latest generation of zoo.c to be listed; an argument
of the form zoo.c:4 will cause generation 4 of zoo.c to be
listed; and an argument of the form zoo.c: or zoo.c:* will
cause all generations of zoo.c to be listed.

L This is similar to the l command except that all supplied argu
ments must be archives and all non deleted generations of all
files in each archive appear in the listing.

On **IX systems, on which the shell expands arguments, if multi
ple archives are to be listed, the L command must be used. On
other systems (VAX/VMS, AmigaDOS, MSDOS) on which wildcard
expansion is done internally by zoo, wildcards may be used in
the archive name, and a multiple archive listing obtained, using
the l command.

v This causes any comment attached to the archive to be listed in
addition to the other information.

V This causes any comment attached to the archive and also any
comment attached to each file to be listed.

Both the V and v command characters can also be used as modi
fiers to the l and L commands.

In addition to the general modifiers described later, the following
modifiers can be applied to the archive list commands.

a This gives a single line format containing both each filename
and the name of the archive, sorted by archive name. It is
especially useful with the L command, since the result can be
further sorted on any field to give a master listing of the
entire contents of a set of archives.

A This causes any comment attached to the archive to be listed.

g This modifier causes file generation information to be listed
about the archive. For each file listed, the user specified
generation limit, if any, is listed. For example, `3g' for a
file means that the user wants no more than three generations of
the file to be kept. In archives created by older versions of
zoo, the listing will show ` g', meaning that no generation
information is kept and multiple generations of the file are not
being maintained.

In addition to the generation information for each file, the ar
chive wide generation limit, if any, is shown at the end of the
listing. If generations have been disabled by the user, this is
so indicated, for example:

Archive generation limit is 3 (generations off).

For more information about generations see the description of the
g command.

m This modifier is currently applicable to **IX systems only. It
causes the mode bits (file protection code) of each file to be
listed as a three digit octal number. Currently zoo preserves
only the lowest nine mode bits. Their meanings are as described
in the **IX documentation for the chmod(1) command.

C This modifier causes the stored cyclic redundancy code (CRC) for
each archived file to be shown as a four digit hexadecimal num

1 This forces one filename to be listed per line. It is most use
ful in combination with the f modifier.

/ This forces any directory name to be always listed, even in fast
columnized listings that do not normally include any directory

+, The modifier causes trailing generation numbers to be omitted
from filenames. The + modifier causes the trailing generation
numbers to be shown, which is also the default if neither nor
+ is specified.

Files may be deleted and undeleted from an archive with the following

zoo {DU}[Pq1] archive file ...

The D command deletes the specified files and the U command undeletes
the specified files. The 1 modifier (the digit one, not the letter
ell) forces deletion or undeletion of at most one file. If multiple
instances of the same file exist in an archive, use of the 1 modifier
may allow selective extraction of one of these.

Comments may be added to an archive with the command:

zoo c[A] archive

Without the modifier A, this behaves identically to the comment com
mand. With the modifier A, the command serves to add or update the
comment attached to the archive as a whole. This comment may be listed
with the lA, LA, v, and V commands. Applying the cA command to an ar
chive that was created with an older version of zoo will result in an
error message requesting that the user first pack the archive with the
P command. This reorganizes the archive and creates space for the ar
chive comment.

The timestamp of an archive may be adjusted with the command:

zoo T[q] archive

Zoo normally attempts to maintain the timestamp of an archive to
reflect the age of the newest file stored in it. Should the timestamp
ever be incorrect it can be fixed with the T command.

An archive may be packed with the command:

zoo P[EPq] archive

If the backup copy of the archive already exists, zoo will refuse to
pack the archive unless the P modifier is also given. The E modifier
causes zoo not to save a backup copy of the original archive after
packing. A unique temporary file in the current directory is used to
initially hold the packed archive. This file will be left behind if
packing is interrupted or if for some reason this file cannot be
renamed to the name of the original archive when packing is complete.

Packing removes any garbage data appended to an archive because of Xmo
dem file transfer and also recovers any wasted space remaining in an
archive that has been frequently updated or in which comments were
replaced. Packing also updates the format of any archive that was cre
ated by an older version of zoo so that newer features (e.g. archive
wide generation limit, archive comment) become fully available.

Zoo can act as a pure compression or uncompression filter, reading from
standard input and writing to standard output. This is achieved with
the command:

zoo f{cu}[h]

where c specifies compression, u specifies uncompression, and h used in
addition requests the high performance compression be used. A CRC
value is used to check the integrity of the data. The compressed data
stream has no internal archive structure and contains multiple files
only if the input data stream was already structured, as might be
obtained, for example, from tar or cpio.

Modem transfers can be speeded up with these commands:

zoo fc < file | sz ... rz | zoo fu > file

General modifiers

The following modifiers are applicable to several commands:

c Applied to the a and u commands, this causes the user to be
prompted for a comment for each file added to the archive. If
the file being added has replaced, or is a newer generation of,
a file already in the archive, any comment attached to that file
is shown to the user and becomes attached to the newly added
file unless the user changes it. Possible user responses are as
described for the comment command. Applied to the archive list
command l, the c modifier causes the listing of any comments
attached to archived files.

. In conjunction with / or // this modifier causes any extracted
pathname beginning with `/' to be interpreted relative to the
current directory, resulting in the possible creation of a sub
tree rooted at the current directory. In conjunction with the
command P the . modifier causes the packed archive to be cre
ated in the current directory. This is intended to allow users
with limited disk space but multiple disk drives to pack large

d Most commands that act on an archive act only on files that are
not deleted. The d modifier makes commands act on both normal
and deleted files. If doubled as dd, this modifier forces
selection only of deleted files.

f Applied to the a and u commands, the f modifier causes fast ar
chiving by adding files without compression. Applied to l it
causes a fast listing of files in a multicolumn format.

q Be quiet. Normally zoo lists the name of each file and what
action it is performing. The q modifier suppresses this. When
files are being extracted to standard output, the q modifier
suppresses the header preceding each file. When archive con
tents are being listed, this modifier suppresses any header and
trailer. When a fast columnized listing is being obtained, this
modifier causes all output to be combined into a single set of
filenames for all archives being listed.

When doubled as qq, this modifier suppresses WARNING messages,
and when tripled as qqq, ERROR messages are suppressed too.
FATAL error messages are never suppressed.

Recovering data from damaged archives

The @ modifier allows the user to specify the exact position in an ar
chive where zoo should extract a file from, allowing damaged portions
of an archive to be skipped. This modifier must be immediately fol
lowed by a decimal integer without intervening spaces, and possibly by
a comma and another decimal integer, giving a command of the form l@m
or l@m,n (to list archive contents) or x@m or x@m,n (to extract files
from an archive). Listing or extraction begin at position m in the ar
chive. The value of m must be the position within the archive of an
undamaged directory entry. This position is usually obtained from
fiz(1) version 2.0 or later.

If damage to the archive has shortened or lengthened it, all positions
within the archive may be changed by some constant amount. To compen
sate for this, the value of n may be specified. This value is also
usually obtained from fiz(1). It should be the position in the archive
of the file data corresponding to the directory entry that has been
specified with m. Thus if the command x@456,575 is given, it will
cause the first 456 bytes of the archive to be skipped and extraction
to begin at offset 456; in addition, zoo will attempt to extract the
file data from position 575 in the archive instead of the value that is
found in the directory entry read from the archive. For example, here
is some of the output of fiz when it acts on a damaged zoo archive:

2526: DIR [changes] ==> 95
2587: DATA
3909: DIR [copyright] ==> 1478
3970: DATA
4769: DATA

In such output, DIR indicates where fiz found a directory entry in the
archive, and DATA indicates where fiz found file data in the archive.
Filenames located by fiz are enclosed in square brackets, and the nota
tion "==> 95" indicates that the directory entry found by fiz at
position 2526 has a file data pointer to position 95. (This is clearly
wrong, since file data always occur in an archive after their directory
entry.) In actuality, fiz found file data at positions 2587, 3970, and
4769. Since fiz found only two directory entries, and each directory
entry corresponds to one file, one of the file data positions is an

In this case, commands to try giving to zoo might be x@2526,2587
(extract beginning at position 2526, and get file data from position
2587), x@3090,3970 (extract at 3090, get data from 3970) and
x@3909,4769 (extract at 3909, get data from 4769). Once a correctly
matched directory entry/file data pair is found, zoo will in most cases
synchronize with and correctly extract all files subsequently found in
the archive. Trial and error should allow all undamaged files to be
extracted. Also note that self extracting archives created using sez
(the Self Extracting Zoo utility for MS DOS), which are normally exe
cuted on an MS DOS system for extraction, can be extracted on non MSDOS
systems using zoo's damaged archive recovery method using the @ modi

Wildcard handling

Under the **IX family of operating systems, the shell normally expands
wildcards to a list of matching files. Wildcards that are meant to
match files within an archive must therefore be escaped or quoted.
When selecting files to be added to an archive, wildcard conventions
are as defined for the shell. When selecting files from within an ar
chive, wildcard handling is done by zoo as described below.

Under MS DOS and AmigaDOS, quoting of wildcards is not needed. All
wildcard expansion of filenames is done by zoo, and wildcards inside
directory names are expanded only when listing or extracting files but
not when adding them.

The wildcard syntax interpreted by zoo is limited to the following

* Matches any sequence of zero or more characters.

? Matches any single character.

Arbitrary combinations of * and ? are allowed.

/ If a supplied pattern contains a slash anywhere in it, then the
slash separating any directory prefix from the filename must be
matched explicitly. If a supplied pattern contains no slashes,
the match is selective only on the filename.

c c Two characters separated by a hyphen specify a character range.
All filenames beginning with those characters will match. The
character range is meaningful only by itself or preceded by a
directory name. It is not specially interpreted if it is part
of a filename.

: and ;
These characters are used to separate a filename from a genera
tion number and are used when selecting specific generations of
archived files. If no generation character is used, the file
name specified matches only the latest generation of the file.
If the generation character is specified, the filename and the
generation are matched independently by zoo's wildcard mecha
nism. If no generation is specified following the : or ; char
acter, all generations of that file will match. As a special
case, a generation number of 0 matches only the latest genera
tion of a file, while ^0 matches all generations of a file
except the latest one. If no filename is specified preceding
the generation character, all filenames will match. As a corol
lary, the generation character by itself matches all generations
of all files.

MS DOS users should note that zoo does not treat the dot as a special
character, and it does not ignore characters following an asterisk.
Thus * matches all filenames; *.* matches filenames containing a dot;
*_* matches filenames containing an underscore; and *z matches all
filenames that end with the character z, whether or not they contain a

Usage hints

The Novice command set in zoo is meant to provide an interface with

Related Topics

Apt Get Commands