rdist(1)rdist(1)NAMErdist - Maintains identical copies of files on multiple hosts
SYNOPSISrdist [-bDhinqRvwy] [-f distfile | -] [-d variable=value] [-m host]
[file...]
rdist [-bhinqRvwy] -csource... [login@]host[:dest]
The rdist command maintains identical copies of files on multiple
hosts.
OPTIONS
Performs a binary comparison; updates files if they differ. Forces
rdist to interpret the remaining arguments as the sources of small dis‐
tfiles in the following format:
(name ... )->[login@]host[:dest] install [dest];
The rest of the command line is treated as if it came from a
distfile. 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. Defines variable to have value.
This option defines or overrides variable definitions in the
distfile. The value can be the empty string, one name, or a
list of names surrounded by parentheses and separated by tabs or
spaces, or both. Turns on debugging output. Specifies another
name for distfile; specify - for standard input. Copies the
file that the link points to rather than the link itself.
Ignores unresolved links. The rdist command maintains the link
structure of files being transferred and warns users if it can‐
not find all the links. Limits which machines are to be
updated. You can use multiple host arguments to limit updates
to a subset of the hosts listed in distfile. You can also spec‐
ify an IPv6 address or addresses for host. Prints the commands
without executing them. This option is useful for debugging
distfile. Operates in quiet mode. This option suppresses
printing of modified file on standard output. Removes extrane‐
ous 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 identical copies of
directories. Verifies that the files are up to date on all the
hosts. Any files that are out of date will be displayed, but
rdist does not change any files or send any mail. Appends the
whole filename to the destination directory name. Normally,
rdist uses only the last component of a name for renaming files,
preserving the directory structure of the copied files. Pre‐
vents recent copies of files from being replaced by files that
are not as recent. Files are normally updated when their time
stamp and size (see stat()) differ. The -y option prevents
rdist from updating files younger than the master file.
DESCRIPTION
The rdist command preserves the owner, group, mode, and modification
time of files if possible. It can also update programs that are execut‐
ing. The rdist command reads commands from distfile in your $HOME
directory and directs the updating of files or directories, or both. If
distfile is a - (dash), 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 filenames are specified on the
command line, rdist 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 rdist com‐
mand treats the filename as a command.
The file specified by distfile contains a sequence of entries that
specify the files to be copied, the destination hosts, and what opera‐
tions to perform to do the updating. Each entry has one of the follow‐
ing 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 were changed since some given date.
The source_list specifies a list of files or directories, or both, on
the local host that is 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 that is being updated (second
format) or the file is newer than timestamp_file (third format).
Labels are optional. They are used to identify a command for partial
updates.
Newlines, tabs, and spaces are only used as separators and are other‐
wise ignored. Comments begin with a # (number sign) and end with a new‐
line.
Variables to be expanded begin with a $ (dollar sign) followed by one
character or a name enclosed in { } (braces) (see EXAMPLES).
Each line of the source and destination lists contains zero or more
names, separated by spaces. The shell metacharacters [, ], {, }, *, and
? are recognized and expanded (on the local host only) as with csh.
They can be escaped with a \ (backslash). The ~ (tilde) character is
also expanded as with csh, but is expanded separately on the local and
destination hosts. When the -w option is used with a filename that
begins with ~, everything except the home directory is appended to the
destination name. Filenames that do not begin with a / (slash) or a ~
(tilde) use the destination user's home directory as the root directory
for the rest of the filename.
If you want to specify an IPv6 address or addresses for destina‐
tion_list, you must enclose each address with the [ ] (bracket) charac‐
ters.
The command list consists of zero or more commands of the following
format:
install <option ...> <destination_name> notify <name_list> except
<name_list> except_pat <pattern_list> special <name_list> string
The install command is used to copy out of date files or directories,
or both. Each source file is copied to each host in the destination
list. Directories are recursively copied in the same way. The destina‐
tion_name is an optional argument to rename files. If no install com‐
mand appears in the command list or the destination name is not speci‐
fied, the source filename is used.
Directories in the pathname are created if they do not exist on the
remote host. To help prevent disasters, a nonempty directory on a tar‐
get host will never be replaced with a regular file or a symbolic link.
However, under the -R option, a nonempty directory is removed if the
corresponding filename is completely absent on the master host.
Options for install are -R, -h, -i, -v, -w, -y, and -b and have the
same semantics as options on the command line, except they only apply
to the files in the source list. The username used on the destination
host is the same as the local host unless the destination name is of
the format user@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 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 pat‐
tern_list is a list of regular expressions (see grep for details). If
one of the patterns matches some string within a filename, that file is
ignored. Note that since \ (backslash) 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 charac‐
ters. To include a $ (dollar sign), it must be escaped with \ (back‐
slash).
The special command is used to specify sh commands that are to be exe‐
cuted on the remote host after the file in name_list is updated or
installed. If the name_list is omitted, the shell commands are executed
for every file updated or installed. The FILE shell variable is set to
the current filename before executing the commands in string. The
string starts and ends with a " (double quote) and can cross multiple
lines in distfile. Separate multiple commands to the shell with a ;
(semicolon). Commands are executed in your home directory on the host
being updated. The special command can be used to rebuild private
databases and so forth after a program is updated.
If you run the rdist command as a normal user and any of the target
hosts does not allow normal users to run rdist, updates to that host
will fail with the following error message:
rdist: connection failed: version numbers don't match
EXAMPLES
The following is a small 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 -R ;
except /usr/lib/${EXLIB} ;
except /usr/games/lib ;
special /usr/sbin/sendmail "/usr/sbin/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 ;
FILES
Contains a list of commands to be read by rdist. Contains update lists
temporarily.
DIAGNOSTICS
A complaint about mismatch of rdist version numbers may really stem
from some problem with starting your shell; for example, you are in too
many groups.
SEE ALSO
Commands: csh(1), grep(1), ksh(1), nrdist(1), sh(1)rdist(1)