|
» |
|
|
|
NAMErdist — remote file distribution program SYNOPSISrdist
[
-bhinqvwyMRD
]
[
-f distfile
]
[
-d var=value
]
[
-m host
]
[
label...
] rdist
[
-bhinqvwyMRD
]
-c name...
[login@]host[:dest] DESCRIPTIONrdist
facilitates the maintaining of 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.
- -f distfile
Specify a
distfile
for
rdist
to execute.
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.
The format of
distfile
is described in detail later.
If
distfile
is
-,
the standard input is used. If no
-f
option is present, the program looks first for a file called
distfile,
then
Distfile
in the local host's working directory
to use as the input. - -d var=value
Define
var
to have
value.
The
-d
option is used to define variable definitions in the
distfile.
value
can be an empty string, one name, or a list of name separated by tabs
and/or spaces and enclosed by a pair of parentheses. However, if the
variable specified is already defined in the
distfile,
the
-d
option has no effect (because the
distfile
overrides the
-d
option). - -D
Display debugging information onto standard output. - -m host
Limit which machines are to be updated. Multiple
-m
arguments can be given to limit updates to a subset of hosts that are
listed in the
distfile.
For more information on the host format, refer to the section
destination_list. - label
Label of a command to execute.
The label must be defined in
distfile. - -c name...
The
-c
option forces
rdist
to interpret the remaining arguments as a small
distfile.
The equivalent distfile is as follows.
( name ... ) -> [login@]host
install [dest] ; Note:
In IPv6 enabled systems to use the
-c
option with an IPv6 address, the IPv6 address has
to be enclosed in a square bracket pair
([
and
]).
An example invocation of
rdist
with the
-c
option and an IPv6 address is as shown below: rdist -c name user@[IPv6 address]:dest If the IPv6 address is not enclosed within square brackets,
the first occurrence of a colon
(:)
is treated as the separator between the
hostname
and the
path. - -n
Print the commands without executing them. This option is
useful for debugging
distfile. - -q
Quiet mode. Files that are being modified are normally
printed on standard output. The
-q
option suppresses this. - -R
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. - -h
Follow symbolic links. Copy the file that the link points to rather than the
link itself. - -i
Ignore unresolved links.
rdist
will normally try to maintain the link structure of files being transferred
and warn the user if it cannot find all the links. - -v
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. - -w
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,
renaming a list of files such as
(dir1/f1
and
dir2/f2)
to
dir3
would create files
dir3/dir1/f1
and
dir3/dir2/f2
instead of
dir3/f1
and
dir3/f2. - -y
Younger mode. Files are normally updated if their
mtime
and
size
(see
stat(2))
disagree. The
-y
option causes
rdist
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. - -b
Binary comparison. Perform a binary comparison and update files if they differ
rather than comparing dates and sizes. - -M
Check that mode, ownership, and group are the same in addition to any other
form of comparison that is in effect. This option will cause files to be
replaced but will only correct the problem with a directory and print a
warning message.
The
distfile
used by
rdist
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 :: time_stamp_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 on the local host
that have been changed since some given date. (See
EXAMPLES.)
- variable_name
Specify the name of a variable. - name_list
List of names (such as list of hosts or lists of files) separated by tabs
and/or spaces and enclosed by parentheses. - source_list
Specify a
list of files and/or directories on the local host to be used
as the master copy for distribution.
Each file in the
source_list
is added to a list for changes,
if
the file is out of date on the host that is being updated (second format),
or
if
the file is newer than the time stamp file (third format).
source_list
may contain a single name, or multiple names separated by tabs and/or spaces
and enclosed by parentheses. - destination_list
List of hosts to which these files are to be
copied.
destination_list
may contain a single name, or multiple names separated by tabs and/or
spaces and the whole list must be enclosed by parentheses. The host
names in the
destination_list
can also be in the form
login@host.
For example,
root@arpa.
In this case, the user
root
owns the files distributed at
arpa. - time_stamp_file
Specify a given date to generate a list of files on the local host that
were modified since that date. - label:
Labels are optional. They are used to identify a command for partial updates. - command_list
Specifies a list of commands to be performed. 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; The
install
command is used to copy out-of-date files and/or directories.
Each source file is copied to each host in the destination list.
Directories are recursively copied in the same way.
opt_dest_name
is an optional parameter to rename files.
If no
install
command appears in the command list or
the destination name is not specified,
source_list
is used.
Directories in the path name will be created if they
do not exist on the remote host.
To help prevent disasters, a non-empty directory on a target will
never be replaced with a regular file or a symbolic link.
However, under the
-R
option a non-empty directory will be removed
if the corresponding filename is completely absent on the master host.
The
options
are
-b,-h,-i,
-v,-w,-y,
-M,
and
-R,
and have the same semantics as
options on the command line, except that they only apply to the files
in the specified
source_list.
The login name used on the destination host is the same as on the local host,
unless the destination name is of the form "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, in
name_list.
If no
@
appears in the name, the destination host is appended to
the name
(e.g., 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 the 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 characters. To include a
$,
it
must be escaped with the backslash. The
special
command is used to specify
sh(1)
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 then the shell commands will be executed
for every file updated or installed. The shell variable `FILE' is set
to the current filename before executing the commands in
string.
string
starts and ends with double quotes (")
and can cross multiple lines in
distfile.
Multiple commands to the shell should be separated by semi-colons
(;).
Commands are executed in the user's home directory on the host
being updated.
The
special
command can be used, for example, to rebuild private databases
after a program has been updated.
Shell variables cannot be used in the command because there is
no escape mechanism for the
$
character.
Newlines, tabs, and blanks are only used as separators and are
otherwise ignored. Comments begin with
#
and end with a newline. A generalized way of dynamically building variable lists is provided by
using a backquote syntax much like the shell. In this way, arbitrary
commands that generate stdout with space-separated words may be used to
build the list (see the use of
cat
command in the examples). Variables to be expanded begin with
$
followed by the variable name
enclosed in curly braces. 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
~
character is also expanded in the same way as
csh
but is expanded separately on the local and destination hosts.
When the
-w
option is used with a file name that begins with
~,
everything except the
home directory is appended to the destination name.
File names which do not begin with
/
or
~
use the destination user's
home directory as the root directory for the rest of the file name. DIAGNOSTICSA message about a mismatch of
rdist
version numbers may mean
that an executable
rdist
is not in the shell's path on the remote system. EXAMPLESThe following is an example.
HOSTS = ( matisse root@arpa )
FILES = ( /usr/lib /usr/bin /usr/local/games
/usr/include/{*.h,{sys,rpc*,arpa}/*.h}
/usr/man/man? `cat ./std-files` )
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/local/games/lib ;
special /usr/sbin/sendmail " /usr/sbin/sendmail -bz" ;
srcs:
/usr/local/src -> 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 ; WARNINGSSource files must reside on the local host where
rdist
is executed. There is no easy way to have a special command executed after all files
in a directory have been updated. Variable expansion only works for name lists and in the
special
command string; there should be a general macro
facility. rdist
aborts on files that have a negative mtime (before Jan 1, 1970). rdist
does carry the atime when installing a file but will preserve it on
an updated file. There should be a `force' option to allow replacement of non-empty directories
by regular files or symlinks. AUTHORrdist
was developed by the University of California, Berkeley. rdist
appeared in the 4.3 Berkeley Software Distribution. FILES- distfile
Input command file. - /tmp/rdist*
Temporary file for update lists.
|