BAR(1) General Commands Manual BAR(1)
bar - create tape archives, and add or extract files
bar [ - ] crxtu [ 014578feovwbXlFmhpBisHSUZRTIN ]
[ bar-file ] [ blocksize ] [ exclude-file ] [ string ]
[ target_directory ] [ user_id ] [ include-file ]
filename1 ... [ -C dir filename ... ]...
bar archives and extracts multiple files onto a single bar, file ar-
chive, called a bar-file. It is quite similar to tar(5), but it has
additional function modifiers, can read and write multiple volumes, and
writes and reads a format that is incompatible with tar (see bar(5)).
A bar-file is usually a magnetic tape, but it can be any file. bar's
actions are controlled by the first argument, the key, a string of
characters containing exactly one function letter from the set rxtuc,
and one or more of the optional function modifiers listed below. Other
arguments to bar are file or directory names that specify which files
to archive or extract. In all cases, the appearance of a directory
name refers recursively to the files and subdirectories of that direc-
c Create a new bar-file and write the named files onto it.
r Write the named files on the end of the bar-file. Note: this option
does not work with quarter-inch archive tapes.
x Extract the named files from the bar-file. If a named file matches
a directory with contents written onto the tape, this directory is
(recursively) extracted. The owner, modification time, and mode are
restored (if possible). If no filename arguments are given, all
files in the archive are extracted. Note: if multiple entries spec-
ifying the same file are on the tape, the last one overwrites all
t List the table of contents of the bar-file.
u Add the named files to the bar-file if they are not there or if they
have been modified since they were last archived. Note: this option
does not work with quarter-inch archive tapes.
Select an alternate drive on which the tape is mounted. The numbers
2, 3, 6, and 9 do not specify valid drives. The default is
f Use the next argument as the name of the bar-file. If f is omitted,
use the device indicated by the TAPE environment variable, if set.
Otherwise, use /dev/rmt8 by default. If bar-file is given as `-',
bar writes to the standard output or reads from the standard input,
whichever is appropriate. Thus, bar can be used as the head or tail
of a filter chain. bar can also be used to copy hierarchies with
example% cd fromdir; bar cf - . | (cd todir; bar xfBp -)
e If any unexpected errors occur bar exits immediately with a pos-
itive exit status.
o Suppress information specifying owner and modes of directories
which bar normally places in the archive. Such information
makes former versions of bar generate an error message like:
filename: cannot create
when they encounter it.
v Verbose. Normally bar does its work silently; the v option dis-
plays the name of each file bar treats, preceded by the function
letter. When used with the t function, v displays the bar-file
entries in a form similar to `ls -l '.
w Wait for user confirmation before taking the specified action.
If you use w, bar displays the action to be taken followed by
the file name, and then waits for a y response to proceed. No
action is taken on the named file if you type anything other
than a line beginning with y.
b Use the next argument as the blocking factor for tape records.
The default blocking factor is 20 blocks. The block size is
determined automatically when reading tapes (key letters x and
t). This determination of the blocking factor may be fooled
when reading from a pipe or a socket (see the B key letter
below). The maximum blocking factor is determined only by the
amount of memory available to bar when it is run. Larger block-
ing factors result in better throughput, longer blocks on nine-
track tapes, and better media utilization.
X Use the next argument as a file containing a list of named files
(or directories) to be excluded from the bar-file when using the
key letters `c', `x', or `t'. Multiple X arguments may be used,
with one exclude-file per argument.
l Display error messages if all links to archived files cannot be
resolved. If l is not used, no error messages are printed.
F With one F argument specified, exclude all directories named
SCCS from bar-file. With two arguments FF, exclude all directo-
ries named SCCS, all files with .o as their suffix, and all
files named errs, core, and a.out.
m Do not extract modification times of extracted files. The modi-
fication time will be the time of extraction.
h Follow symbolic links as if they were normal files or directo-
ries. Normally, bar does not follow symbolic links.
p Restore the named files to their original modes, ignoring the
present umask(2V). Setuid and sticky information are also
extracted if you are the super-user. This option is only useful
with the x key letter.
B Force bar to perform multiple reads (if necessary) so as to read
exactly enough bytes to fill a block. This option exists so
that bar can work across the Ethernet, since pipes and sockets
return partial blocks even when more data is coming.
i Ignore directory checksum errors.
s Force the ownership of extracted files to match the bar
process's effective user ID and group ID.
H The string of up to 128 characters is to be used as a volume
header ID. A volume header is written to each volume of the ar-
chive when the c function letter is specified. See bar(5) for
the volume header's format.
Use of the H function modifier when creating an archive allows
bar to read volumes out of sequence. When extracting a file
that spans volumes, bar will identify the tape(s) it needs to
extract the entire file. If the wrong volume is inserted, bar
issues a warning and prompts again for the correct volume.
S Place files specified for extraction in this target directory
when used with the x function letter.
U Specify the user ID in the volume header when creating archive,
when the H function modifier is used. If the c function letter
is specified and a volume header exists, bar will verify that
the user ids match before overwriting bar-file if the N modifier
Z Specify compression. bar will compress files when used with the
c function letter and will decompress files when used with the x
function letter. bar will neither compress a compressed file,
nor decompress a decompressed file.
R Read the volume header and print the information to stdout.
N See if the user owns the media (uid matches that in the bar
header) before overwriting bar-file with the C key word.
T When using the x or t function letters, terminate the search of
the media after all the files specified are extracted (for x) or
listed (for t).
I Use the next argument as a file containing a list of named
files, one per line, to be included in the bar archive. The
include file expects filenames to be followed by a semicolon and
In the case where excluded files (see X flag) also exist,
excluded files take precedence over all included files. So, if
a file is specified in both the include and exclude files (or on
the command line), it will be excluded.
-C dir filename
In a c (create) or r (replace) operation, bar performs a chdir (see
csh(1)) to that directory before interpreting filename. This allows
multiple directories not related by a close common parent to be
archived using short relative path names. For example, to archive
files from /usr/include and from /etc, one might use:
example% bar c -C /usr include -C /etc .
If you get a table of contents from the resulting bar-file, you will
see something like:
and all the other files in /usr/include .../chown
and all the other files in /etc
Note: the -C option only applies to one following directory name and
one following file name.
Here is a simple example using bar to create an archive of your home
directory on a tape mounted on drive /dev/rmt0:
example% bar cvf /dev/rmt0 .
The c option means create the archive; the v option makes bar tell you
what it's doing as it works; the f option means that you are specifi-
cally naming the file onto which the archive should be placed
(/dev/rmt0 in this example).
Here is another example: /dev/rmt0:
example% bar cvfH /dev/rmt0 "THIS IS MY HEADER" .
As in the first example, the c option means create the archive; the v
option makes bar tell you what it's doing as it works; the f option
means that you are specifically naming the file onto which the archive
should be placed (/dev/rmt0 in this example). The H option says to use
the string "THIS IS MY HEADER" as the ID field in the volume header.
Now you can read the table of contents from the archive like this:
example% bar tvf /dev/rmt0
(access user-id/group-id size mod. datefilename)
rw-r--r-- 1677/40 2123 Nov 7 18:15:1985./archive/test.c
You can extract files from the archive like this:
example% bar xvf /dev/rmt0
If there are multiple archive files on a tape, each is separated from
the following one by an EOF marker. bar does not read the EOF mark on
the tape after it finishes reading an archive file because bar looks
for a special header to decide when it has reached the end of the ar-
chive. Now if you try to use bar to read the next archive file from
the tape, bar does not know enough to skip over the EOF mark and tries
to read the EOF mark as an archive instead. The result of this is an
error message from bar to the effect:
This means that to read another archive from the tape, you must skip
over the EOF marker before starting another bar command. You can
accomplish this using the mt command, as shown in the example below.
Assume that you are reading from /dev/nrmt0.
example% bar xvfp /dev/nrmt0 read first archive from tape
example% mt fsf 1 skip over the end-of-file marker
example% bar xvfp /dev/nrmt0 read second archive from tape
Finally, here is an example using bar to transfer files across the Eth-
ernet. First, here is how to archive files from the local machine
(example) to a tape on a remote system (host):
example% bar cvfb - 20 filenames | rsh host dd of=/dev/rmt0 obs=20b
In the example above, we are creating a bar-file with the c key letter,
asking for verbose output from bar with the v option, specifying the
name of the output bar-file using the f option (the standard output is
where the bar-file appears, as indicated by the - sign), and specifying
the blocksize (20) with the b option. If you want to change the block-
size, you must change the blocksize arguments both on the bar command
and on the dd command.
Now, here is how to use bar to get files from a tape on the remote sys-
tem back to the local system:
example% rsh -n host dd if=/dev/rmt0 bs=20b | bar xvBfb - 20 filenames
In the example above, we are extracting from the bar-file with the x
key letter, asking for verbose output from bar with the v option,
telling bar it is reading from a pipe with the B option, specifying the
name of the input bar-file using the f option (the standard input is
where the bar-file appears, as indicated by the `-' sign), and specify-
ing the blocksize (20) with the b option.
/dev/rmt? half-inch magnetic tape interface
/dev/rar? quarter-inch magnetic tape interface
/dev/rst? SCSI tape interface
TAPE If specified, in the environment, the value of TAPE indicates
the default tape device.
bar will handle multiple volumes gracefully. If a tape error is
encountered, bar issues a message on the standard error requesting a
new volume. The presence of a new volume is confirmed when bar reads a
line beginning with Y or y on the standard input; a line beginning with
N or n aborts the archive; with any other character bar reissues the
cpio(1), mt(1), umask(2V), bar(5), tar(5), dump(8), restore(8)
Neither the r option nor the u option can be used with quarter-inch ar-
chive tapes, since these tape drives cannot backspace.
There is no way to ask for the nth occurrence of a file.
The u option can be slow.
There is no way selectively to follow symbolic links.
When extracting tapes created with the r or u options, directory modi-
fication times may not be set correctly.
Files with names longer than 100 characters cannot be processed.
Filename substitution wildcards do not work for extracting files from
the archive. To get around this, use a command of the form:
bar xvf... /dev/rst0 `bar tf... /dev/rst0 | grep 'pattern'`
If you specify `-' as the target file and the archive spans volumes,
the request for a new volume may get lost.
19 February 1988 BAR(1)