nrdist - Remote file distribution client program
/usr/bin/nrdist [-DFn] [-A num] [-a num] [-d var=value]
[-l <local logopts>] [-L <remote logopts>] [-f distfile]
[-M maxproc] [-m host] [-odistopts] [-t timeout] [name...]
/usr/bin/nrdist -DFn -c name ... [login@]host[:dest]
/usr/bin/nrdist -Server
/usr/bin/nrdist -V
Sets the minimum number of free files (inodes) on a
filesystem that must exist for nrdist to update or install
a file. Sets the minimum amount of free space (in bytes)
on a filesystem that must exist for nrdist to update or
install a file. Turns on debugging output. Defines var
to have value. This option is used to define or override
variable definitions in the distfile. The value parameter
can be an empty string, one name, or a list of names surrounded
by parentheses and separated by tabs or spaces.
Does not fork any child nrdist processes. All clients are
updated sequentially. Sets the name of the distfile to
use to be distfile. If distfile is specified as - (dash),
read from standard input (stdin). Sets local logging
options. See MESSAGE LOGGING for details on the syntax for
logopts. Sets remote logging options. The logopts is the
same as for local logging except the values are passed to
the remote server (rdistd). See MESSAGE LOGGING for
details on the syntax for logopts. Sets the maximum number
of simultaneously running child nrdist processes to
num. The default is 4. Limits which machines are to be
updated. Multiple -m arguments can be given to limit
updates to a subset of the hosts listed in the distfile.
You can also specify an IPv6 address or addresses for
machine. Prints the commands without executing them. This
option is useful for debugging distfile. Specifies the
dist options to enable. The distopts is a comma-separated
list of the following options: Verify that the files are
up to date on all the hosts. Any files that are out of
date will be displayed but no files will be changed nor
any mail sent. Whole mode. The whole file name is
appended to the destination directory name. Normally,
only the last component of a name is used when renaming
files. This will preserve the directory structure of the
files being copied instead of flattening the directory
structure. For example, rdisting a list of files such as
/path/dir1/f1 and /path/dir2/f2 to /tmp/dir would create
files /tmp/dir/path/dir1/f1 and /tmp/dir/path/dir2/f2
instead of /tmp/dir/dir1/f1 and /tmp/dir/dir2/f2. Automatically
exclude executable files that are in a.out(4)
format from being checked or updated. Younger mode. Files
are normally updated if their mtime and size (see stat(2))
disagree. This option causes nrdist not to update files
that are younger than the master copy. This can be used to
prevent newer copies on other hosts from being replaced. A
warning message is printed for files which are newer than
the master copy. Binary comparison. Perform a binary
comparison and update files if they differ rather than
comparing dates and sizes. Follow symbolic links. Copy
the file that the link points to rather than the link
itself. Ignore unresolved links. The nrdist command will
normally try to maintain the link structure of files being
transferred and warn the user if all the links cannot be
found. Do not check or update files on target host that
reside on NFS filesystems. Enable check on target host to
see if a file resides on a read-only filesystem. If a file
does, then no checking or updating of the file is
attempted. If the target on the remote host is a symbolic
link, but is not on the master host, the remote target
will be left a symbolic link. This behavior is generally
considered a bug in the original version of nrdist, but is
present to allow compatibility with older versions. Quiet
mode. Files that are being modified are normally printed
on standard output. This option suppresses this. Remove
extraneous files. If a directory is being updated, any
files that exist on the remote host that do not exist in
the master directory are removed. This is useful for maintaining
truly identical copies of directories. Do not
check user ownership of files that already exist. The file
ownership is only set when the file is updated. Do not
check group ownership of files that already exist. The
file ownership is only set when the file is updated. Do
not check file and directory permission modes. The permission
mode is only set when the file is updated. Do not
descend into a directory. Normally nrdist will recursively
check directories. If this option is enabled, any files
listed in the file list in the distfile that are directories
are not recursively scanned. Only the existence, ownership,
and mode of the directory are checked. Use the
numeric group id (gid) to check group ownership instead of
the group name. Use the numeric user id (uid) to check
user ownership instead of the user name. Save files that
are updated instead of removing them. Any target file that
is updates is first rename from file to file.OLD. Sets
the timeout period (in seconds) for waiting for responses
from the remote nrdist server. The default is 900 seconds.
Print version information and exit.
The nrdist command is a program to maintain identical
copies of files over multiple hosts. It preserves the
owner, group, mode, and modification time of files if possible
and can update programs that are executing. The
nrdist command reads commands from distfile to direct the
updating of files or directories, or both. If distfile is
a - (dash), the standard input is used.
If no -f option is specified, the program looks first for
distfile, then Distfile to use as the input. If no file
names are specified on the command line, nrdist updates
all of the files and directories listed in distfile. Otherwise,
the argument is read as the name of a file to be
updated or a command to execute. If the name of the file
specified by the file argument is the same as the name of
a command, the nrdist command treats the file name as a
command. These may be used together to update specific
files using specific commands.
The -c option forces nrdist to interpret the remaining
arguments as a small distfile. The equivalent distfile is
as follows.
( name ... ) -> [login@]host install [dest] ;
If you want to specify an IPv6 address for host, you must
prefix the address with the \[ (backslash, left bracket)
characters and terminate the address with the \] (backslash,
right bracket) characters.
The -Server option provides partial backward compatible
support for older versions of nrdist that used this option
to put nrdist into server mode. If nrdist is started with
the -Server command line option, it attempts to exec (run)
the old version of rdist. This option will only work if
nrdist was compiled with the location of the old rdist
(usually /usr/old/rdist) and that program is available at
run time.
The nrdist command uses the rcmd(3) interface to access
each target host. The nrdist command attempts to run the
rdistd -S command on each target host. The nrdist command
does not specify the absolute pathname to rdistd on the
target host in order to avoid imposing any policy on where
rdistd must be installed on target host. Therefore, rdistd
must be somewhere in the $PATH of the user running nrdist
on the remote (target) host.
MESSAGE LOGGING [Toc] [Back]
The nrdist command uses a collection of predefined message
facilities that each contain a list of message types specifying
which types of messages to send to that facility.
The local client (nrdist) and the remote server (rdistd)
each maintain their own copy of what types of messages to
log to what facilities.
The -l logopts option to nrdist tells nrdist what logging
options to use locally. The -L logopts option to nrdist
tells nrdist what logging options to pass to the remote
rdistd server.
The form of logopts should be of form facility=types:facility=types...
The valid facility names are: Sends messages to standard
output. Sends messages to a file. To specify the file
name, use the following format: file=filename=types.
For example, file=/tmp/rdist.log=all,debug. Uses
the syslogd(8) facility. Uses the internal nrdist
notify facility. This facility is used in conjunction
with the notify keyword in a distfile to specify
what messages are mailed to the notify address.
The types should be a comma separated list of message
types. Each message type specified enables that message
level. This is unlike the syslog(3) system facility which
uses an ascending order scheme. The following are the
valid types: Things that change. This includes files that
are installed or updated in some way. General information.
General info about things that change. This
includes things like making directories which are needed
in order to install a specific target, but which are not
explicitly specified in the distfile. Normal errors that
are not fatal. Fatal errors. Warnings about errors which
are not as serious as nerror type messages. Debugging
information. All but debug messages.
Here is a sample command line option:
-l stdout=all:syslog=change,notice:file=/tmp/rdist.log=all
This entry will set local message logging to have all but
debug messages sent to standard output, change and notice
messages will be sent to syslog(3), and all messages will
be written to the file /tmp/rdist.log.
DISTFILES [Toc] [Back]
The distfile contains a sequence of entries that specify
the files to be copied, the destination hosts, and what
operations to perform to do the updating. Each entry has
one of the following formats.
<variable_name> = <name_list> [label:] <source_list> ->
<destination_list> <command_list> [label:] <source list>
:: <timestamp_file> <command_list>
The first format is used for defining variables. The second
format is used for distributing files to other hosts.
The third format is used for making lists of files that
have been changed since some given date.
The source_list specifies a list of files or directories
on the local host which are to be used as the master copy
for distribution. The destination_list is the list of
hosts to which these files are to be copied. Each file in
the source_list is added to a list of changes if the file
is out of date on the host which is being updated (second
format) or the file is newer than the timestamp_file
(third format).
Labels are optional. They are used to identify a command
for partial updates.
Newlines, tabs, and blanks are only used as separators and
are otherwise ignored. Comments begin with a # (number
sign) and end with a newline.
Variables to be expanded begin with a $ (dollar sign) followed
by one character or a name enclosed in curly braces
(see EXAMPLES).
The source and destination lists one of the following formats:
<name> ( <zero or more names separated by white-space> )
If you want to specify an IPv6 address or addresses for
destination_list, you must enclose each address with the
[] (bracket) characters.
These simple lists can be modified by using one level of
set addition, subtraction, or intersection as follows:
list - list list + list list & list
If additional modifications are needed (for example, all
servers and client machines except for the Tru64 UNIX
machines), the list will have to be explicitly constructed
in steps using temporary variables.
The shell meta-characters [,],,},*, and ? are recognized
and expanded (on the local host only) in the same way as
csh(1). They can be escaped with a \ (backslash). The ~
(tilde) character is also expanded in the same way as csh,
but is expanded separately on the local and destination
hosts. When the -owhole option is used with a file name
that begins with a ~, everything except the home directory
is appended to the destination name. File names that do
not begin with a / (slash) or a ~ use the destination
user's home directory as the root directory for the rest
of the file name.
The command list consists of zero or more commands of the
following format:
install <options> opt_dest_name ; notify
<name_list> ; except <name_list> ;
except_pat <pattern_list> ; special <name_list>
string ; cmdspecial <name_list> string ;
The install command is used to copy out-of-date files or
directories. Each source file is copied to each host in
the destination list. Directories are recursively copied
in the same way. The opt_dest_name argument is an optional
argument to rename files. If no install command appears
in the command list or the destination name is not specified,
the source file name is used.
Directories in the path name are created if they do not
exist on the remote host. The -odistopts option, as specified
under OPTIONS, has the same semantics as on the command
line except they only apply to the files in the
source list. The login name used on the destination host
is the same as the local host unless the destination name
is of the format login@host.
The notify command is used to mail the list of files
updated (and any errors that may have occurred) to the
listed names. If no @ (at sign) appears in the name, the
destination host is appended to the name (for example,
name1@host, name2@host, ...).
The except command is used to update all of the files in
the source list except for the files listed in name_list.
This is usually used to copy everything in a directory,
except certain files.
The except_pat command is like the except command except
that pattern_list is a list of regular expressions (see
ed(1) for details). If one of the patterns matches some
string within a file name, that file will be ignored. Note
that since \ is a quote character, it must be doubled to
become part of the regular expression. Variables are
expanded in pattern_list, but not shell file pattern
matching characters. To include a $ (dollar sign), it
must be escaped with \ (backslash).
The special command is used to specify sh commands that
are to be executed on the remote host after the file in
name_list is updated or installed. If the name_list is
omitted, the shell commands will be executed for every
file updated or installed. string starts and ends with "
(double quote) and can cross multiple lines in distfile.
Separate multiple commands to the shell with a ; (semicolon).
Commands are executed in the user's home directory
on the host being updated. The special command can be used
to rebuild private databases after a program has been
updated. The following environment variables are set for
each special command: The full pathname of the local file
that was just updated. The full pathname of the remote
file that was just updated.
The cmdspecial command is similar to the special command,
except it is executed only when the entire command is completed
instead of after each file is updated. The list of
files is placed in the environment variable $FILES. Each
file name in $FILES is separated by a ; (semicolon).
If a hostname ends in a + (plus sign), the plus sign is
stripped off and NFS checks are disabled. This is equivalent
to disabling the -ochknfs option just for this one
host.
The following is an example of a distfile:
HOSTS = ( matisse root@arpa)
FILES = ( /bin /lib /usr/bin /usr/games
/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )
EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab
dshrc
sendmail.cf sendmail.fc sendmail.hf sendmail.st
uucp vfont )
${FILES} -> ${HOSTS}
install -oremove,chknfs ;
except /usr/lib/${EXLIB} ;
except /usr/games/lib ;
special /usr/lib/sendmail "/usr/lib/sendmail -bz" ;
srcs: /usr/src/bin -> arpa
except_pat ( \\.o\$ /SCCS\$ ) ;
IMAGEN = (ips dviimp catdvi)
imagen: /usr/local/${IMAGEN} -> arpa
install /usr/local/lib ;
notify ralph ;
${FILES} :: stamp.cory
notify root@cory ;
If the basename of a file (the last component in the pathname)
is (period), nrdist assumes the remote (destination)
name is a directory. For example, /tmp/. means that /tmp
is a directory on the remote host.
The following options are still recognized for backwards
compatibility:
-v -N -O -q -b -r -R -s -w -y -h -i -x
ENVIRONMENT VARIABLES [Toc] [Back] Name of temporary directory to use. Default is /tmp.
Input command file. Temporary file for update lists.
Commands: sh(1), csh(1), rdist(1)
Functions: stat(2), rcmd(3)
nrdist(1)
[ Back ] |