rdist - Maintains identical copies of files on multiple
hosts
rdist [-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.
Performs a binary comparison; updates files if they differ.
Forces rdist to interpret the remaining arguments as
the sources of small distfiles 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 cannot 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
specify 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 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 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. Prevents 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.
The rdist command preserves the owner, group, mode, and
modification time of files if possible. It can also update
programs that are executing. 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 command 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 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
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 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 { } (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
destination_list, you must enclose each address with the [
] (bracket) characters.
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 destination_name 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 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 target 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 pattern_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 patternmatching
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 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
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 ;
Contains a list of commands to be read by rdist. Contains
update lists temporarily.
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.
Commands: csh(1), grep(1), ksh(1), nrdist(1), sh(1)
rdist(1)
[ Back ] |