Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ bru(1) — Amiga System V Release 4 Version 2.03

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

tar(1)

cpio(1)

volcopy(1M)

finc(1M)

frec(1M)

ff(1M)

filesave(1M)

tar(1)

dd(1)

rsh(1)

rmt(8)

dump(8)

restore(8)

rdump(8)

rrestore(8)

BRU(1)  —  USER COMMANDS

NAME

bru − backup and restore utility

SYNOPSIS

bru modes [ control options ] [ selection options ] [ files ]

DESCRIPTION

Bru is a UNIX filesystem backup utility with significant enhancements over other more common utilities such as tar, cpio, volcopy, and dd. Some of bru’s capabilities include:

• Full or incremental backup with quick and easy restoration of files. 

• Multiple physical volumes per archive. 

• Data integrity assurance via checksum computation on every archive block. 

• Ability to properly save and restore directories, symbolic links, block special files, and character special files. 

• Comparison of archives with current directory hierarchy. 

• Ability to recover files from corrupted archives or damaged media with minimal data loss. 

• No inherent maximum archive buffer size. 

• Improved performance through random access archive I/O when available. 

• Automatic byte or half word swapping as necessary when reading archives produced on other machines. 

• Recognition of filename generation patterns in the same form as the shell for files read from an archive. 

• Intelligent handling of large, sparse files. 

When files are specified on the command line then the actions to be performed are limited to those files. If a named file is a directory then it and all its descendants are used. If no files are specified then the default for writing archives is all files in and below the current directory.  The default for reading archives is selection of all files in the archive. 

If “−” is given instead of files then the standard input is read to obtain the file list.  This is useful in conjunction with the find command to provide finer control over files selected for backup.  Obviously this mode is only valid when bru is not also reading its archive from the standard input. 

DEFAULTS

Various default parameters, such as archive device name and size, archive buffer size, controlling terminal name, etc. are system dependent.  These defaults, along with version, variant, and other miscellaneous internal  information may be discovered via the −h mode. 

MODES

One or more of the following modes must be specified.  The order of execution, from highest priority to lowest, is ecitxdgh. 

−c Create a new archive.  Forces a new archive to be created regardless of whether one currently exists.  Writing starts at the first block. 

−d Differences between archived files and current files are detected and reported.  May be specified more than once, as −dd −ddd or −dddd to control level of difference checking. 
When specified as −d bru reports when it discovers that a regular file’s size (st_size) or contents (when compared as byte streams) has changed since the archive was made. 
When specified as −dd bru reports additional differences in modification date (st_mtime) access mode (st_mode), number of links (st_nlink) for non-directory files, differences in the contents of symbolic links, owner id (st_uid), and group id (st_gid). 
When specified as −ddd bru reports additional differences in host device (st_dev), major/minor device (st_rdev) for special files, and time of last access (st_atime) for regular files. 
When specified as −dddd bru reports all differences except time of last status change (st_ctime is not resettable), major/minor device numbers for non-special files (meaningless), and size differences for directory files (may have empty entries).  The −dddd mode is generally only meaningful during a verification pass with full backups of quiescent filesystems. 

−e Estimate media requirements for archive creation with same arguments.  Prints estimated number of volumes, number of files to be archived, total number of archive blocks, and total size of archive in kilobytes.  If the media size is unknown or unspecified, it is assumed to be infinite. 

−g Dump archive info block in a form more easily parsed by programs implementing a complete filesystem management package.  Performs no other archive actions. 

−h Print help summary of options.  Also prints some internal information such as version number and default values for archive pathname, media size, archive buffer size, etc. 

−i Inspect archive for internal consistency and data integrity.  When −vv option is also given, prints information from archive header block. 

−t List table of contents of archive.  When used with the −v option will give a verbose table of contents in the same format as the “ls −l” command.  When used with the −vv option will also indicate what files are linked to other files, and where symbolic links point to. 

−x Extract named files from archive.  If an archived file is extracted (see −u option) then the access mode, device id (special files only), owner uid, group uid, access time, and modification time are also restored.  If the −C flag is given (see below), then the owner uid and group uid will be changed to that of the current user. 
Nonexistent directories are recreated from archived directories if possible, otherwise they are created with appropriate defaults for the current user. Extracted or created directories are initially empty.

CONTROL OPTIONS

Many of the control options are similar in function to their tar or cpio equivalents. 

Sizes are specified in bytes.  The scale factors M, k, or b, can be used to indicate multiplication by 2∗∗20 (one Megabyte), 1024, or 512 respectively.  Thus “10k”, “20b”, and “10240” all specify the same number of bytes. 

−# str Use string str as a control string for the built in debugging system.  This option provides information about the internal workings of bru for the software maintainer or the merely curious.  Some examples are given later. 

−a Do not reset the access times of disk files that have been read while performing other actions.  Bru used to restore the access and modification times of disk files after they had been read.  Resetting the times prevents defeat of the mechanism used to track down and remove “dead” files that haven’t been accessed in any meaningful way recently.  For various reasons, this flag is now permanently enabled, thus defeating the preservation of the access time field in the stat structure. 

−A flags Special machine dependent options for the Commodore Amiga.  Current flags are:

c clear file archived bit after processing

i ignore file archived bit for selecting files

r reject files that have archived bit set

s set file archived bit after processing

−b bsize Use bsize as the archive input/output buffer size.  The minimum is the size of an archive block (2k or 2048 bytes) and the maximum is determined by available memory and I/O device limitations.  If bsize is not an even multiple of 2048 bytes, it will be rounded up.  Normally this option is only required with the −c mode since bru writes this information in the archive header block.  If specified, bsize overrides any existing default value (generally 20k), whether built in or read from the archive header. 

−B Useful in shell scripts where bru is run in the background with no operator present.  Under these conditions, bru simply terminates with appropriate error messages and status, rather than attempting interaction with the terminal. 

−C Change the owner (chown) and group of each extracted file to the owner uid and group gid of the current user.  Normally, bru will restore the owner and group to those recorded in the archive.  This flag causes bru to follow the system default, with extracted files having the same owner and group as the user running bru, including Root. (Under 4.2 BSD, the default group is that of the directory in which the file is created.)
The −C option is useful with archives imported from other systems.  In general, it should not be used by the operator or system administrator when restoring saved files.  Use the −tv option to see the owner and group of files stored in the archive. 

−D Causes bru to use double buffering to the archive device on systems that have System V style shared memory.  Depending upon hardware constraints, double buffering may dramatically increase the archive device I/O rate, but may adversely affect the error recovery algorithms. 

−f path Use path as the archive file instead of the default.  If the path is “−” then bru uses the standard input for archive reading or standard output for archive writing, as appropriate. 
If multiple −f options are given, each path is added to a list of files to cycle through each time a volume change is required.  When the end of the list is reached, bru automatically cycles back to the first path and waits for confirmation to continue the cycle again.  Any input other than a carriage return will cause bru to use the newly entered path and to abort the cycling for the remainder of the current run. 

−F Fast mode.  In fast mode, checksum computations and comparisons are disabled.  This mode is useful when the output of one bru is piped to the input of another bru, or when the data integrity of the archive transmission medium is essentially perfect. Archives recorded with fast mode enabled must also be read with fast mode. Also, be aware that some of the automatic features of bru, such as automatic byte swapping, are not functional in fast mode.

−I iopt Set interaction option from iopt. Current recognized values for iopt are:

q,fifo write queries to fifo

r,fifo read responses from fifo

l,file write log info to file

The q and r options are useful for interacting with bru when it has been run without a controlling terminal.  See the discussion under RUNNING FROM CRON. 

−L str Label the archive with the specified string str. Str is limited to 63 characters and is usually some meaningful reminder pertaining to the archive contents. 

−l Ignore unresolved links. Normally bru reports problems with unresolved links (both regular and symbolic links). This option suppresses all such complaints.

−m Do not cross mounted file system boundaries during expansion of explicitly named directories.  This option applies only to directories named in files. It limits selection of directory descendants to those located on the same filesystem as the explicitly named directory. This option currently applies only to the −c and −e modes. 

−N nbits Use nbits as the number of bits for LZW compression if −Z is also specified.  The default is to use 12 bits, which is also the minimum allowable.  The maximum allowable value is 16 bits.  Archives created with more than 12 bits of compression may be unreadable on smaller systems due to memory or processor word length constraints. 

−p Pass over files in archive by reading rather than seeking.  Normally bru will use random access capabilities if available.  This option forces reading instead of seeks. 

−P flags Pathname options that provide explicit control of expansion of directories, automatic archiving of parent directories, etc.  Possible characters for flags are:

e Disable automatic expansion of explicitly named directories. 

E Enable automatic expansion of explicitly named directories. 

f Disable filter mode.  Builds internal tree of pathnames before doing anything with the pathnames from the input list. 

F Enable filter mode.  Each pathname from the input list is treated individually, and processing is done with that pathname before the next pathname is examined. 

p Disable automatic archiving of parent directories of explicitly named files or directories. 

P Enable automatic archiving of parent directories of explicitly named files or directories. 

See the discussion under DIRECTORIES. 

−R Remote files are to be excluded from the archive.  If the system does not support remote filesystems, this option is ignored. 

−s msize Use msize as the media size.  The effective media size will be computed from msize since it must be integral multiple of the input/output buffer size (see the −b option).  Normally this option is only required with the −c mode since bru writes this information in the archive header block.  If specified, msize overrides any existing default value, whether built in or read from the archive header. 

−S size Enable options to deal more intelligently with sparse files (files with lots of null bytes).  When used in conjunction with the −c mode, turns on automatic file compression for files that are larger than the specified size. When used in conjunction with the −x mode, seeks will be used to create blocks of null bytes in the output file, rather than actually writing null bytes. See the discussion under SPARSE FILES. 

−v Enable verbose mode.  May be specified more than once, as −vv, −vvv, or −vvvv, to get even more verbosity.

−w Wait for confirmation.  Bru will print the file name, the action to be taken, and wait for confirmation.  Any response beginning with ’y’ or ’Y’ will cause the action to complete.  Any response beginning with ’g’ or ’G’ will cause the action to complete and will reset the −w option so that no further confirmations will be requested.  Any other response will abort the action. 

−Z Use LZW file compression.  This is not the default because not all versions of bru know how to deal with compressed files.  When the −v option is also selected, the compression ratio for each file is printed as a percentage.  When this flag is used in conjunction with the −t option on an archive that contains compressed file, the actual archive file sizes and names are printed, rather than the original values before archiving. 
A limited amount of backwards compatibility to non-compression versions of bru is provided.  Archives read by older versions will appear to contain files that were precompressed prior to archiving.  The public domain compress utility can be used to decompress such files after dearchiving. 
Also see the −N option. 

FILE SELECTION OPTIONS

The file selection options control which files are selected for processing.  Note that some options are only valid with specific modes. 

−n date Select only files newer than date.  The date is given in one of the forms:

l l.  DD−MMM−YY[,HH:MM:SS]EX: 12−Mar−84,12:45:00 MM/DD/YY[,HH:MM:SS] EX: 3/12/84 MMDDHHMM[YY] EX: 0312124584 pathname EX: /etc/lastfullbackup

The time of day is optional in the first two forms.  If present, it is separated from the date with a comma. 

If date is really the pathname of a file, then the modification date of that file will be used instead.  This is useful in automated backups when a dummy file is “touched” to save the date of last backup. 

−o user Select only files owned by user. User may be specified in one of three ways:

• As an ascii string corresponding to a user name in the password file. 

• As the pathname of a file in which case the owner of that file is used. 

• As a numeric value (decimal). 

−u flags When used in conjunction with −x mode, causes files of type specified by flags to be unconditionally selected regardless of modification times.  Normally bru will not overwrite (supersede) an existing file with an older archive file of the same name.  Files which are not superseded will give warnings if verbose mode level 2 (−vv) or higher is enabled.  Possible characters for flags are:

a select all files (same as specifying all flags)

b select block special files

c select character special files

d select directories

l select symbolic links

p select fifos (named pipes)

f select regular files (same as r)

r select regular files (same as f)

Selection of directories only implies that their attributes may be modified.  Existing directories are never overwritten, this option merely allows their attributes to be set back to some previously existing state. 

Selection of symbolic links only implies that the contents of the link will be modified.  It is currently impossible under 4.2 BSD to change access time, modification time, or the file mode of a symbolic link. 

EXAMPLES

Create (−c) a new archive of all files under “/usr/src”, writing archive to file (−f) “/dev/rmt0” using multiple tapes with a maximum size (−s) of 30 megabytes per tape. 

bru −c −f /dev/rmt0 −s 30M /usr/src

Create (−c) a new archive on the default device in the first pass, archiving all files in and below the current directory which have been created or modified (−n) since 3 P.M. on 14−Jan−84.  Then do a second pass to verify that there are no differences (−d) between the archive and current files.  Each file is listed (−v) as it is processed. 

bru −cvd −n 14−Jan−84,15:00:00

Archive all files owned (−o) by user “user1” using the default archive device. 

find / −user user1 −print │ bru −c −
bru −c −o user1 /

Copy a directory hierarchy from “/usr/u1” to “/usr/u2”. 

(cd /usr/u1; bru −cf − ) │ (cd /usr/u2; bru −xf −)

Extract (−x) the regular file “/usr/guest/myfile” unconditionally (−ur) from an archive on file (−f) “/dev/rf0”.  Since the device size was recorded in the header block, it need not be specified.  Note that option arguments do not need to be separated from their corresponding option flag by whitespace. 

bru −x −ur −f/dev/rf0 ./usr/guest/myfile

Extract (−x) all C source files in “/usr/src/cmd” that have names beginning with characters ’a’ through ’m’.  Wait (−w) for confirmation before extracting each file. 

bru −xw ′/usr/src/cmd/[a−m]∗.c′

Inspect (−i) a previously created archive on the default device, dumping the contents of the header block for inspection (−vvv) and verifying internal consistency and data integrity of the archive. 

bru −ivvv

Perform the same function as the last example except enable various features of the built in debugger (when linked in).  The debug control string is a string of the form “−#<opt1>:<opt2>:...”, where each option is either a single flag character or a flag character followed by a comma separated list.  Available flag characters are: ’d’ enable debugging for list of keywords, ’f’ limit debugging to list of function names, ’F’ print source file name, ’L’ print source file line numbers, ’n’ print nesting depth, ’o’ redirect output to listed file, ’p’ print process name, ’t’ enable tracing. 

bru −ivvv −#t
bru −ivvv −#d:t
bru −ivvv −#d,ar_io,verify:F:L
bru −ivvv −#d:f,ar_seek
bru −ivvv −#d:o,trace.out:t:p

Back up the entire root filesystem without crossing mounted (−m) filesystem boundaries.  The archive will be written to file (−f) “/dev/rmt0” using an I/O buffer size (−b) of 10k bytes.  A record of all files processed will be written to file “brulogfile” for future reference. 

cd /
bru −cvm −f /dev/rmt0 −b 10k >brulogfile

DIAGNOSTICS

Most diagnostics are reasonably informative.  The most common have to do with meaningless combinations of options, incompatible options, hitting memory or device limits, unresolved file links, trying to archive or restore something to which access is normally denied, or problems with media errors and/or archive corruption. 

DEVICE TABLE

Bru contains an internal table of known devices and their characteristics.  Bru first looks for an environment variable BRUTAB, which contains the name of dynamically loaded file if it begins with a ’/’ character, or contains device descriptions if the first character is not ’/’. If there is no BRUTAB environment variable, the file /etc/brutab, is loaded. If neither of the preceding is found, an internal default description is loaded.

SIGNAL HANDLING

Bru normally catches both interrupt (SIGINT) and quit (SIGQUIT).  When interrupt is caught during archive creation or extraction, bru completes its work on the current file before cleaning up and exiting.  This is the normal way of aborting bru. When a quit signal is caught an immediate exit is taken.

Note that during file extraction, a quit signal may leave the last file only partially extracted.  Similarly, a quit signal during archive writing may leave the archive truncated.  When either interrupt or quit is caught at any other time an immediate exit is taken. 

ERROR RECOVERY

When properly configured for a given software/hardware environment, bru can recover from most common errors.  For example, attempts to use unformatted media are detected, allowing substitution of formatted media.  Random blocks in an archive can be deliberately overwritten (corrupted) without affecting bru’s ability to recover data from the rest of the archive. When I/O errors are detected, retries are performed automatically. Out of order sequencing on multi-volume archive reads is detected, allowing replacement with the correct volume.

DIRECTORIES

There are two actions bru takes with respect to directories, that make creation and extraction of entire hierarchies of files more convenient and complete.  These actions are automatic archiving of parent directories and automatic expansion of explicitly named directories. 

Automatic archiving of parent directories means that when bru is given the complete pathname of a file to archive, it attempts to automatically archive all parent directory nodes necessary to fully restore the specified file.  During extraction, any required directories which do not already exist are restored from the archive if possible, otherwise they are created with appropriate defaults for the current user.  When bru reads it’s list of files from the standard input, or when the −Pp option is given, this automatic archiving of parent directory nodes is suppressed.  Note also, that when creating archives with additional constraints on the selected files (such as use of the −n option), these parent directories may be excluded. 

Automatic expansion of explicitly named directories means that when bru is given an explicit file name that names a directory node, not only is that directory node archived, but all files and subdirectories in that directory are archived.  I.E., the entire file hierarchy rooted in the explicitly named directory is archived.  When bru reads it’s list of files from the standard input, or when the −Pe option is given, this automatic expansion of directories is suppressed. 

Note that incremental archives, archives created with the −Pp option, or archives created from a list of files supplied on the standard input stream, may not contain all of the necessary parent directories to replicate the original hierarchy and thus may result in creation of directories with the default attributes when files are extracted from the archive. 

When bru reads the list of files from the standard input stream, the default values for the −P options are −PeFp, which turns off expansion of directories, turns on filter mode, and turns off automatic archiving of parent directories.  This allows bru to be conveniently used to archive only filesystem nodes that are explicitly named on the input list. 

When files are explicitly  named on the command line (or default to ’.’), the default values for the −P options are −PEfP, which turns on expansion of directories, turns off filter mode, and turns on automatic archiving of parent directories.  This is typically the most convenient behavior for arguments given on the command line. 

WILDCARDS

When reading archives bru recognizes file name generation patterns in the same format as the shell.  This allows greater flexibility in specifying files to be extracted, compared, or listed.  As a special extension to shell type expansion, the sense of the match is reversed for patterns that begin with ’!’. 

Note that the patterns may have to be quoted to prevent expansion by the shell.  Also note that patterns are processed independently, without regard for any other patterns that may or may not be present.  In particular, "/bin/a∗  /bin/b∗" is equivalent to "/bin/[ab]∗", but "/bin/!a∗ /bin/!b∗" is equivalent to "/bin/∗", not "/bin/![ab]∗". 

BYTE/WORD SWAPPING

While reading archives produced on other machines, bru automatically attempts to perform byte and/or word swapping as necessary. 

REMOTE TAPE DRIVES

On 4.2 BSD systems, and System V systems that support networking, bru allows the use of remote tape drives for the archive device (via the −f option).  A remote tape drive file name has the form

system[.user]:/dev/???

where system is the remote system, the optional user is the login name to use on the remote system if different from the current user’s login name, and /dev/???  is the tape drive to use (1600 BPI or 800 BPI, raw or blocked, rewinding or non-rewinding, etc.).  In all cases, the user must have the appropriate permissions on the remote system.  (See also the CAVEATS section, below.) 

RUNNING FROM CRON

Sometimes it is convenient to run bru under conditions where there is no controlling terminal.  This can be a problem if interaction is needed, such as when switching to a new volume.  As an example, consider the case of running bru from cron, where the operator mounts a tape before leaving in the evening, and bru writes the first volume in the middle of the night.  When returning in the morning, the operator wants to be able to mount a second tape if necessary, and instruct bru to continue. 

If no interaction with the user is required, running from cron is no different than running directly from a terminal.  However, when interaction is necessary there are basically two options; terminate, or find some way to communicate with the operator (or another program masquerading as the operator).  The −B option provides for simple termination.  The −I options provide for communication with an operator. 

On systems that support fifos, a pair of fifos are used to send requests and receive replies.  Before running bru, create a pair of fifos with the commands:

mknod /dev/bru.q p
mknod /dev/bru.r p

Then, add the arguments “-Iq,/dev/bru.q -Ir,/dev/bru.r” to the desired bru command line which ultimately gets executed under cron. The first time bru needs to communicate with an operator, it will open the two fifos, write a query to the bru.q fifo, and wait for a response from the bru.r fifo.  A simple program provided with bru, called brutalk can be used to read the query and send a reply:

brutalk </dev/bru.q >/dev/bru.r

The brutalk program will continue to read queries and send replies until either bru exits, or a control-D (EOF) is typed at the terminal. 

EXIT CODES

Bru always returns meaningful status as follows:

0    Normal exit, no errors or warnings. 
1    Warnings (or interrupted).
2    Errors (or quit signal).

SPARSE FILES

With the UNIX filesystem, it is possible to create files which take up much less space in the filesystem than their size would indicate.  These files are generally known as sparse files, and are common in database or scientific applications. 
For example, it is perfectly acceptable to create an empty file, seek to an offset 1Mb from the start of the file, and then write a single byte of data at that point, thus creating a file one byte more than 1Mb in length, with the first 1Mb being null bytes that are not actually stored in separately allocated blocks in the filesystem. Without using the −S option, bru would archive this file using 1Mb of archive space, and on extraction, would create a file that actually takes up 1Mb of space in the filesystem.  With the −S option, bru will automatically compress this file down to about 4Kb in the archive, and on extraction, will use seeks to recreate the sparse file, thus saving about 1Mb of space in the filesystem.  The −S option is not the default because not all systems on which bru runs can support sparse files, and because the overhead of compressing all files larger than the autocompression threshold can be significant.  Note that this option is also useful even when sparse files are not expected, since it can be used during archive creation to selectively compress files larger than a specified size. This is generally faster than compressing every file, while still saving considerable space in the archive, since large files generally tend to compress better than small ones.

SEE ALSO

Under System V, see
tar(1), cpio(1), volcopy(1M), finc(1M), frec(1M), ff(1M), filesave(1M). Under 4.2 BSD, see
tar(1), dd(1), rsh(1), rmt(8), dump(8), restore(8), rdump(8), rrestore(8).

AUTHOR

Fred Fish
Ported from System V to 4.2 BSD by Arnold Robbins, at Georgia Tech

UNIX SYSTEM INCOMPATIBILITIES

Bru recognizes special file types that may be allowed on one type of UNIX system, but not on another.  For instance, on a 4.2 BSD system, bru will extract fifos as plain files (mode 0666, as modified by the umask), and issue an appropriate error message. Usually, bru will issue two messages.  The first message will be the more descriptive of the two. 

Under System V, when bru sees a symbolic link, it will check to see if the file to be linked to exists, and is not a directory.  If so, it will attempt to make a hard link.  If the hard link fails, bru will issue a warning. 

Pyramid corporation conditional symbolic links are also supported.  On a Pyramid, they are restored properly.  On a 4.2 BSD system, bru will attempt a symbolic link for the file given in the UCB universe.  Under System V, it will attempt a hard link for the file given in the ATT universe (with the same constraints as when attempting to restore regular symbolic links). 

Currently, the only different UNIX systems that bru fully understands are System V, 4.2 BSD, and Pyramid’s OSx. 

CAVEATS

Pathnames are limited to 1023 characters in length.  For linked files, the limit applies to the combined total of the first link found and the link currently being processed, if both of them exceed the previous 127 character maximum, otherwise the limit applies to the link with the longest pathname.  When earlier versions with a 127 character limit read archives produced by the 1023 character version, they will see a truncated pathname with the prefix "brutmp/". 
Implementation differences complicate the algorithms for automatic detection of end of file on devices. The algorithms can be fooled, hence the −s option. 
Special files moved to a machine other than their original host will generally be useless and possibly even dangerous. This goes double for symbolic links.
When extracting files from archives, patterns used to match directories may result in some unnecessary directories being extracted. For example, if the pattern is “a/∗/c”, and the directory “a/b” is encountered in the archive, the directory file “a/b” will be extracted since it will be needed when (and if) the file “a/b/c” is encountered. When in doubt, use the −w option. 
In order to be able to efficiently archive needed directories, bru builds an image of the directory tree for files using dynamically allocated memory.  Since there may be at most 5120 characters passed on the command line, it is very unlikely that bru will run out of memory while building the tree from command line arguments.  This is not true of file lists read from the standard input, particularly on machines with limited address space. 
Information about file linkages is also kept in memory. Some linkages may be lost if memory is exhausted.
Since bru is owned by root and runs with “set user id” to allow it to create directories and special files, it makes every attempt to prevent normal users from archiving or extracting files they would normally not have access to.  There may be loopholes.  Also note that anyone with physical or electronic access to an archive, and knowledge of the archive structure, can recover any of its contents by writing their own file extraction program. 
Directories which have filesystems mounted on them will not be properly archived until the filesystem is unmounted. This is not generally a problem.
Explicitly naming both a directory and one of its descendants will cause the descendant to be archived twice, unless they are on separate filesystems and the −m flag is used. 
Explicitly naming a file more than once is ineffective.
When reading from the raw magnetic tape file (rmtxxx) bru automatically attempts to adjust the I/O buffer size to match that used to record the archive.  Under certain circumstances it may fail and require help via the −b option. 
The 4.2 BSD remote magnetic tape protocol, rmt(8), allows writing and reading of no more than 10K bytes, so −b10k must be specified when reading from or writing to a remote tape drive.  Also, using remote tape drives can be slow. 

Amiga Unix  —  Last change:

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026