[BACK]Return to rdist.1 CVS log [TXT][DIR] Up to [local] / src / usr.bin / rdist

Diff for /src/usr.bin/rdist/rdist.1 between version 1.1 and 1.2

version 1.1, 1995/10/18 08:45:59 version 1.2, 1996/02/03 12:12:37
Line 1 
Line 1 
 .\" Copyright (c) 1985, 1990, 1993  
 .\"     The Regents of the University of California.  All rights reserved.  
 .\"  .\"
   .\" Copyright (c) 1983 Regents of the University of California.
   .\" All rights reserved.
   .\"
 .\" Redistribution and use in source and binary forms, with or without  .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions  .\" modification, are permitted provided that the following conditions
 .\" are met:  .\" are met:
Line 29 
Line 30 
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF  .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.  .\" SUCH DAMAGE.
 .\"  .\"
 .\"     from: @(#)rdist.1       8.2 (Berkeley) 12/30/93  
 .\"     $Id$  .\"     $Id$
   .\"     @(#)rdist.1     6.6 (Berkeley) 5/13/86
 .\"  .\"
 .Dd December 30, 1993  .TH RDIST 1 "March 14, 1994"
 .Dt RDIST 1  .UC 6
 .Os BSD 4.3  .SH NAME
 .Sh NAME  rdist \- remote file distribution client program
 .Nm rdist  .SH SYNOPSIS
 .Nd remote file distribution program  .B rdist
 .Sh SYNOPSIS  [
 .Nm rdist  .B \-DFn
 .Op Fl nqbRhivwy  ]
 .Op Fl f Ar distfile  [
 .Op Fl d Ar var=value  .B \-A
 .Op Fl m Ar host  .I num
 .Op Ar name ...  ]
 .Nm rdist  [
 .Op Fl nqbRhivwy  .B \-a
 .Fl c  .I num
 .Ar name ...  ]
 .Oo login@ Oc Ns Ar host Ns Op :dest  [
 .Sh DESCRIPTION  .B \-d
 .Nm Rdist  .I var=value
 is a program to maintain identical copies of files over multiple hosts.  ]
   [
   .B \-l
   .I <local logopts>
   ]
   [
   .B \-L
   .I <remote logopts>
   ]
   [
   .B \-f
   .I distfile
   ]
   [
   .B \-M
   .I maxproc
   ]
   [
   .B \-m
   .I host
   ]
   [
   .B \-o
   .I distopts
   ]
   [
   .B \-t
   .I timeout
   ]
   [
   .B \-p
   .I <rdistd-path>
   ]
   [
   .B \-P
   .I <rsh-path>
   ]
   [
   .I name ...
   ]
   .PP
   .B rdist
   .B \-DFn
   .B -c
   .I name ...
   .I [login@]host[:dest]
   .PP
   .B rdist
   .B \-Server
   .PP
   .B rdist
   .B \-V
   .SH DESCRIPTION
   .I Rdist
   is a program to maintain identical copies of files over multiple hosts.
 It preserves the owner, group, mode, and mtime of files if possible and  It preserves the owner, group, mode, and mtime of files if possible and
 can update programs that are executing.  can update programs that are executing.
 .Nm Rdist  .I Rdist
 reads commands from  reads commands from
 .Ar distfile  .I distfile
 to direct the updating of files and/or directories.  to direct the updating of files and/or directories.
 .Pp  
 Options specific to the first SYNOPSIS form:  
 .Pp  
 .Bl -tag -width indent  
 .It Fl  
 If  If
 .Ar distfile  .I distfile
 is  is `\-', the standard input is used.
 .Sq Fl ,  If no
 the standard input is used.  .B \-f
 .It Fl f Ar distfile  option is present, the program looks first for `distfile',
 Use the specified  then `Distfile' to use as the input.
 .Ar distfile.  
 .El  
 .Pp  
 If either the  
 .Fl f  
 or  
 .Sq Fl  
 option is not specified, the program looks first for  
 .Dq Pa distfile ,  
 then  
 .Dq Pa Distfile  
 to use as the input.  
 If no names are specified on the command line,  If no names are specified on the command line,
 .Nm rdist  .I rdist
 will update all of the files and directories listed in  will update all of the files and directories listed in
 .Ar distfile  .  .IR distfile .
 Otherwise, the argument is taken to be the name of a file to be updated  Otherwise, the argument is taken to be the name of a file to be updated
 or the label of a command to execute. If label and file names conflict,  or the label of a command to execute. If label and file names conflict,
 it is assumed to be a label.  it is assumed to be a label.
 These may be used together to update specific files  These may be used together to update specific files
 using specific commands.  using specific commands.
 .Pp  .PP
 Options specific to the second SYNOPSIS form:  The
 .Pp  .B \-c
 .Bl -tag -width Fl c  option forces
 .It Fl c  .I rdist
 Forces  
 .Nm rdist  
 to interpret the remaining arguments as a small  to interpret the remaining arguments as a small
 .Ar distfile  .  .IR distfile .
 .Pp  
 The equivalent distfile is as follows.  The equivalent distfile is as follows.
 .Pp  .nf
 .Bd -filled -offset indent -compact  
 .Pq Ar name ...  .ti +.5i
 .Li ->  ( \fIname\fP ... ) -> [\fIlogin\fP@]\fIhost\fP
 .Op Ar login@  .ti +1i
 .Ar host  install [\fIdest\fP] ;
 .Bd -filled -offset indent -compact  
 .Li install  .fi
 .Op Ar dest ;  .PP
 .Ed  The
 .Ed  .B \-Server
 .El  option is recognized to provide partial backward compatible support
 .Pp  for older versions of
 Options common to both forms:  .I rdist
 .Pp  which used this option to put
 .Bl -tag -width Ic  .I rdist
 .It Fl b  into server mode.
 Binary comparison. Perform a binary comparison and update files if they differ  If
 rather than comparing dates and sizes.  .I rdist
 .It Fl d Ar var=value  is started with the
   .B \-Server
   command line option, it will attempt to exec (run) the old version of
   .I rdist.
   This option will only work if
   .I rdist
   was compiled with the location of the old rdist
   (usually either
   .I /usr/ucb/oldrdist
   or
   .I /usr/old/rdist)
   and that program is available at run time.
   .PP
   .I Rdist
   can use either the
   .I rcmd(3)
   function call or the
   .I rsh(1c),
   remote shell, command to access each target host.
   The method used is selected at compile-time.
   If the
   .I rsh(1c)
   method is used and
   the target host is the string
   .B localhost
   and
   the remote user name is the same as the local user name,
   .I rdist
   will run the command
   .nf
   .sp
   .RS
   .B "/bin/sh -c rdistd -S"
   .RE
   .sp
   .fi
   Otherwise
   .I rdist
   run will run the command
   .nf
   .sp
   .RS
   \fBrsh \fIhost\fB -l \fIremuser \fBrdistd -S\fR
   .RE
   .sp
   .fi
   where
   .I host
   is the name of the target host,
   .I remuser
   is the name of the user to make the connection as and,
   .I rdistd
   is the rdist server command on the target host as shown below.
   .PP
   If the
   .I rcmd(3)
   method is used, then
   .I rdist
   makes the connection to the target host itself and runs
   the
   .I rdistd
   server program as shown below.
   The default, and preferred method, is to use
   .I rsh(1c)
   to make the connection to target hosts.  This allows
   .I rdist
   to be run without being setuid to ``root''.
   .PP
   On each target host
   .I Rdist
   will attempt to run the command
   .nf
   .sp
   .RS
   .I "rdistd -S"
   .RE
   .sp
   .fi
   or
   .nf
   .sp
   .RS
   .I "<rdistd path> -S"
   .RE
   .sp
   .fi
   if the
   .I \-p
   option was specified.
   If no
   .B \-p
   option is included,
   or the
   .I <rdistd path>
   is a simple filename,
   .I rdistd
   or
   .I <rdistd path>
   must be somewhere in the
   .B $PATH
   of the user running
   .B rdist
   on the remote (target) host.
   .SH OPTIONS
   .TP
   .B "\-A \fInum\fR"
   Set the minimum number of free files (inodes) on a filesystem that must exist
   for
   .I rdist
   to update or install a file.
   .TP
   .B "\-a \fInum\fR"
   Set the minimum amount of free space (in bytes) on a filesystem that must exist
   for
   .I rdist
   to update or install a file.
   .TP
   .B \-D
   Enable copious debugging messages.
   .TP
   .B "\-d \fIvar=value\fR"
 Define  Define
 .Ar var  .I var
 to have  to have
 .Ar value  .  .IR value .
 The  This
 .Fl d  
 option is used to define or override variable definitions in the  option is used to define or override variable definitions in the
 .Ar distfile  .  .IR distfile .
 .Ar Value  .I Value
 can be the empty string, one name, or a list of names surrounded by  can be the empty string, one name, or a list of names surrounded by
 parentheses and separated by tabs and/or spaces.  parentheses and separated by tabs and/or spaces.
 .It Fl h  .TP
 Follow symbolic links. Copy the file that the link points to rather than the  .B \-F
 link itself.  Do not fork any child
 .It Fl i  .I rdist
 Ignore unresolved links.  processes.
 .Nm Rdist  All clients are updated sequentially.
 will normally try to maintain the link structure of files being transferred  .TP
 and warn the user if all the links cannot be found.  .B "\-f \fIdistfile\fR"
 .It Fl m Ar host  Set the name of the distfile to use to be
   .I distfile .
   If
   .I distfile
   is specified as
   ``\-'' (dash)
   then read from standard input (stdin).
   .TP
   .B "\-l \fIlogopts\fR"
   Set local logging options.
   See the section
   .B "MESSAGE LOGGING"
   for details on the syntax for
   .I logopts.
   .TP
   .B "\-L \fIlogopts\fR"
   Set remote logging options.
   .I logopts
   is the same as for local logging
   except the values are passed to the remote
   server (\fIrdistd\fR).
   See the section
   .B "MESSAGE LOGGING"
   for details on the syntax for
   .I logopts.
   .TP
   .B "\-M \fInum\fR"
   Set the maximum number of simultaneously
   running child
   .I rdist
   processes to
   .I num.
   The default is 4.
   .TP
   .B "\-m \fImachine\fR"
 Limit which machines are to be updated. Multiple  Limit which machines are to be updated. Multiple
 .Fl m  .B \-m
 arguments can be given to limit updates to a subset of the hosts listed in the  arguments can be given to limit updates to a subset of the hosts listed in the
 .Ar distfile  .  .IR distfile .
 .It Fl n  .TP
   .B \-n
 Print the commands without executing them. This option is  Print the commands without executing them. This option is
 useful for debugging  useful for debugging
 .Ar distfile  .  .IR distfile .
 .It Fl q  .TP
 Quiet mode. Files that are being modified are normally  .B "\-o\fIdistopts\fR"
 printed on standard output. The  Specify the dist options to enable.
 .Fl q  .I distopts
 option suppresses this.  is a comma separated list of options which are listed below.
 .It Fl R  The valid values for
 Remove extraneous files. If a directory is being updated, any files that exist  .I distopts
 on the remote host that do not exist in the master directory are removed.  are:
 This is useful for maintaining truly identical copies of directories.  .RS
 .It Fl v  .IP \fBverify\fR
 Verify that the files are up to date on all the hosts. Any files  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  that are out of date will be displayed but no files will be changed
 nor any mail sent.  nor any mail sent.
 .It Fl w  .IP \fBwhole\fR
 Whole mode. The whole file name is appended to the destination directory  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.  name.  Normally, only the last component of a name is used when renaming files.
 This will preserve the directory structure of the files being  This will preserve the directory structure of the files being
 copied instead of flattening the directory structure. For example,  copied instead of flattening the directory structure. For example,
 renaming a list of files such as ( dir1/f1 dir2/f2 ) to dir3 would create  rdisting a list of files such as
 files dir3/dir1/f1 and dir3/dir2/f2 instead of dir3/f1 and dir3/f2.  .I /path/dir1/f1
 .It Fl y  and
   .I /path/dir2/f2
   to
   .I /tmp/dir
   would create
   files
   .I /tmp/dir/path/dir1/f1
   and
   .I /tmp/dir/path/dir2/f2
   instead of
   .I /tmp/dir/dir1/f1
   and
   .I /tmp/dir/dir2/f2.
   .IP \fBnoexec\fR
   Automatically exclude executable files that are in
   .I a.out(5)
   format from being checked or updated.
   .IP \fByounger\fR
 Younger mode. Files are normally updated if their  Younger mode. Files are normally updated if their
 .Ar mtime  .I mtime
 and  and
 .Ar size  .I size
 (see  (see
 .Xr stat  2  )  .IR stat (2))
 disagree. The  disagree. This
 .Fl y  
 option causes  option causes
 .Nm rdist  .I rdist
 not to update files that are younger than the master copy.  not to update files that are younger than the master copy.
 This can be used  This can be used
 to prevent newer copies on other hosts from being replaced.  to prevent newer copies on other hosts from being replaced.
 A warning message is printed for files which are newer than the master copy.  A warning message is printed for files which are newer than the master copy.
 .El  .IP \fBcompare\fR
 .Pp  Binary comparison. Perform a binary comparison and update files if they differ
 .Ar Distfile  rather than comparing dates and sizes.
   .IP \fBfollow\fR
   Follow symbolic links. Copy the file that the link points to rather than the
   link itself.
   .IP \fBignlnks\fR
   Ignore unresolved links.
   .I Rdist
   will normally try to maintain the link structure of files being transferred
   and warn the user if all the links cannot be found.
   .IP \fBchknfs\fR
   Do not check or update files on target host that
   reside on NFS filesystems.
   .IP \fBchkreadonly\fR
   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.
   .IP \fBchksym\fR
   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
   .I rdist,
   but is present to allow compatibility with older versions.
   .IP \fBquiet\fR
   Quiet mode. Files that are being modified are normally
   printed on standard output. This
   option suppresses this.
   .IP \fBremove\fR
   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.
   .IP \fBnochkowner\fR
   Do not check user ownership of files that already exist.
   The file ownership is only set when the file is updated.
   .IP \fBnochkgroup\fR
   Do not check group ownership of files that already exist.
   The file ownership is only set when the file is updated.
   .IP \fBnochkmode\fR
   Do not check file and directory permission modes.
   The permission mode is only set when the file is updated.
   .IP \fBnodescend\fR
   Do not descend into a directory.
   Normally
   .I rdist
   will recursively check directories.
   If this option is enabled, then 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.
   .IP \fBnumchkgroup\fR
   Use the numeric group id (gid) to check group ownership instead of
   the group name.
   .IP \fBnumchkowner\fR
   Use the numeric user id (uid) to check user ownership instead of
   the user name.
   .IP \fBsavetargets\fR
   Save files that are updated instead of removing them.
   Any target file that is updates is first rename from
   .B file
   to
   .B file.OLD.
   .RE
   .TP
   .B "\-p \fI<rdistd-path>\fR"
   Set the path where the rdistd server is searched for on the target host.
   .TP
   .B "\-P \fI<rsh-path>\fR"
   Set the path to the
   .I rsh(1c)
   command.
   The
   .I rsh-path
   may be a colon seperated list of possible pathnames.
   In this case, the first component of the path to exist is used.
   i.e.
   .B "/usr/ucb/rsh:/usr/bin/remsh",
   .B /usr/bsd/rsh.
   .TP
   .B "\-t \fItimeout\fR"
   Set the timeout period (in seconds) for waiting for responses from the remote
   .I rdist
   server.
   The default is 900 seconds.
   .TP
   .B \-V
   Print version information and exit.
   .SH "MESSAGE LOGGING"
   .I Rdist
   uses a collection of predefined message
   .B facilities
   that each contain a list of message
   .B types
   specifying which types of messages to send to that
   .I facility.
   The local client (\fIrdist\fR) and the remote server (\fIrdistd\fR) each
   maintain
   their own copy of what types of messages to log to what facilities.
   .LP
   The
   .B \-l
   .I logopts
   option to
   .I rdist
   tells
   .I rdist
   what logging options to use locally.
   The
   .B \-L
   .I logopts
   option to
   .I rdist
   tells
   .I rdist
   what logging options to pass to the remote
   .I rdistd
   server.
   .LP
   The form of
   .I logopts
   should be of form
   .sp
   .RS
   \fIfacility\fB=\fItypes\fB:\fIfacility\fB=\fItypes...
   .RE
   .sp
   The valid facility names are:
   .RS
   .IP \fBstdout\fR
   Messages to standard output.
   .IP \fBfile\fR
   Log to a file.  To specify the file name, use the format
   ``\fBfile=\fIfilename\fB=\fItypes\fR''.
   e.g.
   .B "``file=/tmp/rdist.log=all,debug''.
   .IP \fBsyslog\fR
   Use the
   .I syslogd(8)
   facility.
   .IP \fBnotify\fR
   Use the internal
   .I rdist
   .B notify
   facility.
   This facility is used in conjunction with the
   .B notify
   keyword in a
   .I distfile
   to specify what messages are mailed to the
   .B notify
   address.
   .RE
   .LP
   .I types
   should be a comma separated list of message types.  Each message type
   specified enables that message level.  This is unlike the
   .I syslog(3)
   system facility which uses an ascending order scheme.
   The following
   are the valid
   .I types:
   .RS
   .IP \fBchange\fR
   Things that change.
   This includes files that are installed or updated in some way.
   .IP \fBinfo\fR
   General information.
   .IP \fBnotice\fR
   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
   .I distfile.
   .IP \fBnerror\fR
   Normal errors that are not fatal.
   .IP \fBferror\fR
   Fatal errors.
   .IP \fBwarning\fR
   Warnings about errors which are not as serious as
   .B nerror
   type messages.
   .IP \fBdebug\fR
   Debugging information.
   .IP \fBall\fR
   All but debug messages.
   .RE
   .LP
   Here is a sample command line option:
   .nf
   .sp
   .RS
   \-l stdout=all:syslog=change,notice:file=/tmp/rdist.log=all
   .RE
   .sp
   .fi
   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
   .I syslog(3),
   and all messages will be written to the file
   .B /tmp/rdist.log.
   .SH DISTFILES
   .PP
   The
   .I distfile
 contains a sequence of entries that specify the files  contains a sequence of entries that specify the files
 to be copied, the destination hosts, and what operations to perform  to be copied, the destination hosts, and what operations to perform
 to do the updating. Each entry has one of the following formats.  to do the updating. Each entry has one of the following formats.
 .Pp  .nf
 .Bd -literal -offset indent -compact  
   .RS
 <variable name> `=' <name list>  <variable name> `=' <name list>
 [label:]<source list> `\->' <destination list> <command list>  [ label: ] <source list> `\->' <destination list> <command list>
 [label:]<source list> `::' <time_stamp file> <command list>  [ label: ] <source list> `::' <time_stamp file> <command list>
 .Ed  .RE
 .Pp  
   .fi
 The first format is used for defining variables.  The first format is used for defining variables.
 The second format is used for distributing files to other hosts.  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  The third format is used for making lists of files that have been changed
 since some given date.  since some given date.
 The  The \fIsource list\fP specifies a
 .Ar source list  
 specifies a  
 list of files and/or directories on the local host which are to be used  list of files and/or directories on the local host which are to be used
 as the master copy for distribution.  as the master copy for distribution.
 The  The \fIdestination list\fP is the list of hosts to which these files are to be
 .Ar 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  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  if the file is out of date on the host which is being updated (second format) or
 the file is newer than the time stamp file (third format).  the file is newer than the time stamp file (third format).
 .Pp  .PP
 Labels are optional. They are used to identify a command for partial updates.  Labels are optional. They are used to identify a command for partial updates.
 .Pp  .PP
 Newlines, tabs, and blanks are only used as separators and are  Newlines, tabs, and blanks are only used as separators and are
 otherwise ignored. Comments begin with `#' and end with a newline.  otherwise ignored. Comments begin with `#' and end with a newline.
 .Pp  .PP
 Variables to be expanded begin with `$' followed by one character or  Variables to be expanded begin with `$' followed by one character or
 a name enclosed in curly braces (see the examples at the end).  a name enclosed in curly braces (see the examples at the end).
 .Pp  .PP
 The source and destination lists have the following format:  The source and destination lists have the following format:
 .Bd -literal -offset indent  .nf
   
   .ti +.5i
 <name>  <name>
 .Ed  
 or  or
 .Bd -literal -offset indent -compact  .ti +.5i
 `(' <zero or more names separated by white-space> `)'  `(' <zero or more names separated by white-space> `)'
 .Ed  
 .Pp  .fi
   These simple lists can be modified by using one level of set addition,
   subtraction, or intersection like this:
   .nf
   
   .ti +.5i
   list '-' list
   or
   .ti +.5i
   list '+' list
   or
   .ti +.5i
   list '&' list
   
   .fi
   If additional modifications are needed (e.g., ``all servers and client
   machines except for the OSF/1 machines'') then the list will have
   to be explicitly constructed in steps using "temporary" variables.
   .PP
 The shell meta-characters `[', `]', `{', `}', `*', and `?'  The shell meta-characters `[', `]', `{', `}', `*', and `?'
 are recognized and expanded (on the local host only) in the same way as  are recognized and expanded (on the local host only) in the same way as
 .Xr csh  1  .  .IR csh (1).
 They can be escaped with a backslash.  They can be escaped with a backslash.
 The `~' character is also expanded in the same way as  The `~' character is also expanded in the same way as
 .Xr csh 1  .IR csh
 but is expanded separately on the local and destination hosts.  but is expanded separately on the local and destination hosts.
 When the  When the
 .Fl w  .B \-o\fIwhole\fR
 option is used with a file name that begins with `~', everything except the  option is used with a file name that begins with `~', everything except the
 home directory is appended to the destination name.  home directory is appended to the destination name.
 File names which do not begin with `/' or `~' use the destination user's  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.  home directory as the root directory for the rest of the file name.
 .Pp  .PP
 The command list consists of zero or more commands of the following  The command list consists of zero or more commands of the following
 format.  format.
 .Bd -ragged -offset indent -compact  .nf
 .Bl -column except_patx pattern\ listx  
 .It `install'   <options>       opt_dest_name `;'  .RS
 .It `notify'    <name list>     `;'  .ta \w'cmdspecial    'u +\w'name list    'u
 .It `except'    <name list>     `;'  `install'       <options>       opt_dest_name `;'
 .It `except_pat'        <pattern list>  `;'  `notify'        <name list>     `;'
 .It `special'   <name list>     string `;'  `except'        <name list>     `;'
 .El  `except_pat'    <pattern list>  `;'
 .Ed  `special'       <name list>     string `;'
 .Pp  `cmdspecial'    <name list>     string `;'
   .RE
   
   .fi
   .PP
 The  The
 .Ic install  .I install
 command is used to copy out of date files and/or directories.  command is used to copy out of date files and/or directories.
 Each source file is copied to each host in the destination list.  Each source file is copied to each host in the destination list.
 Directories are recursively copied in the same way.  Directories are recursively copied in the same way.
 .Ar Opt_dest_name  .I Opt_dest_name
 is an optional parameter to rename files.  is an optional parameter to rename files.
 If no  If no
 .Ic install  .I install
 command appears in the command list or  command appears in the command list or
 the destination name is not specified,  the destination name is not specified,
 the source file name is used.  the source file name is used.
 Directories in the path name will be created if they  Directories in the path name will be created if they
 do not exist on the remote host.  do not exist on the remote host.
 To help prevent disasters, a non-empty directory on a target host 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  The
 .Ar options  \fB\-o \fIdistopts\fR
 are `\-R', `\-h', `\-i', `\-v', `\-w', `\-y', and `\-b'  option
 and have the same semantics as  as specified above under
 options on the command line except they only apply to the files  .B OPTIONS,
   has the same semantics as
   on the command line except they only apply to the files
 in the source list.  in the source list.
 The login name used on the destination host is the same as the local host  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".  unless the destination name is of the format ``login@host".
 .Pp  .PP
 The  The
 .Ic notify  .I notify
 command is used to mail the list of files updated (and any errors  command is used to mail the list of files updated (and any errors
 that may have occurred) to the listed names.  that may have occurred) to the listed names.
 If no `@' appears in the name, the destination host is appended to  If no `@' appears in the name, the destination host is appended to
 the name  the name
 (e.g., name1@host, name2@host, ...).  (e.g., name1@host, name2@host, ...).
 .Pp  .PP
 The  The
 .Ic except  .I except
 command is used to update all of the files in the source list  command is used to update all of the files in the source list
 .Ic except  .B except
 for the files listed in  for the files listed in \fIname list\fP.
 .Ar name list  .  
 This is usually used to copy everything in a directory except certain files.  This is usually used to copy everything in a directory except certain files.
 .Pp  .PP
 The  The
 .Ic except_pat  .I except_pat
 command is like the  command is like the
 .Ic except  .I except
 command except that  command except that \fIpattern list\fP is a list of regular expressions
 .Ar pattern list  
 is a list of regular expressions  
 (see  (see
 .Xr ed  1  .IR ed (1)
 for details).  for details).
 If one of the patterns matches some string within a file name, that file will  If one of the patterns matches some string within a file name, that file will
 be ignored.  be ignored.
 Note that since `\e' is a quote character, it must be doubled to become  Note that since `\e' is a quote character, it must be doubled to become
 part of the regular expression.  Variables are expanded in  part of the regular expression.  Variables are expanded in \fIpattern list\fP
 .Ar pattern list  
 but not shell file pattern matching characters.  To include a `$', it  but not shell file pattern matching characters.  To include a `$', it
 must be escaped with `\e'.  must be escaped with `\e'.
 .Pp  .PP
 The  The
 .Ic special  .I special
 command is used to specify  command is used to specify
 .Xr sh  1  .IR sh (1)
 commands that are to be executed on the  commands that are to be executed on the
 remote host after the file in  remote host after the file in \fIname list\fP is updated or installed.
 .Ar name list  If the \fIname list\fP is omitted then the shell commands will be executed
 is updated or installed.  for every file updated or installed.
 If the  .I String
 .Ar 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  
 .Ar string  .  
 .Ar String  
 starts and ends with `"' and can cross multiple lines in  starts and ends with `"' and can cross multiple lines in
 .Ar distfile .  .I distfile.
 Multiple commands to the shell should be separated by `;'.  Multiple commands to the shell should be separated by `;'.
 Commands are executed in the user's home directory on the host  Commands are executed in the user's home directory on the host
 being updated.  being updated.
 The  The
 .Ar special  .I special
 command can be used to rebuild private databases, etc.  command can be used to rebuild private databases, etc.
 after a program has been updated.  after a program has been updated.
 .Pp  The following environment variables are set for each
 The following is a small example:  .I special
 .Bd -literal -offset indent  command:
 HOSTS = ( matisse root@arpa )  .IP \fBFILE\fR
   The full pathname of the local file that was just updated.
   .IP \fBREMFILE\fR
   The full pathname of the remote file that was just updated.
   .IP \fBBASEFILE\fR
   The basename of the remote file that was just updated.
   .PP
   The
   .I cmdspecial
   command is similar to the
   .I 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
   .B $FILES.
   Each file name in
   .B $FILES
   is separated by a `:' (colon).
   .PP
   If a hostname ends in a ``+'' (plus sign), then the plus
   is stripped off and NFS checks are disabled.
   This is equivalent to disabling the
   .B \-o\fIchknfs\fR
   option just for this one host.
   .PP
   The following is a small example.
   .nf
   
   .RS
   HOSTS = ( matisse root@arpa)
   
 FILES = ( /bin /lib /usr/bin /usr/games  FILES = ( /bin /lib /usr/bin /usr/games
 \t/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}          /usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
 \t/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )          /usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )
   
 EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc  EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc
 \tsendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont )          sendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont )
   
 ${FILES} -> ${HOSTS}  ${FILES} -> ${HOSTS}
 \tinstall -R ;          install -oremove,chknfs ;
 \texcept /usr/lib/${EXLIB} ;          except /usr/lib/${EXLIB} ;
 \texcept /usr/games/lib ;          except /usr/games/lib ;
 \tspecial /usr/lib/sendmail "/usr/lib/sendmail -bz" ;          special /usr/lib/sendmail "/usr/lib/sendmail -bz" ;
   
 srcs:  srcs:
 /usr/src/bin -> arpa  /usr/src/bin -> arpa
 \texcept_pat ( \e\e.o\e$ /SCCS\e$ ) ;          except_pat ( \e\e.o\e$ /SCCS\e$ ) ;
   
 IMAGEN = (ips dviimp catdvi)  IMAGEN = (ips dviimp catdvi)
   
 imagen:  imagen:
 /usr/local/${IMAGEN} -> arpa  /usr/local/${IMAGEN} -> arpa
 \tinstall /usr/local/lib ;          install /usr/local/lib ;
 \tnotify ralph ;          notify ralph ;
   
 ${FILES} :: stamp.cory  ${FILES} :: stamp.cory
 \tnotify root@cory ;          notify root@cory ;
 .Ed  .RE
 .Sh FILES  
 .Bl -tag -width /tmp/rdist* -compact  .fi
 .It Pa distfile  .SH ENVIRONMENT
 input command file  .IP TMPDIR
 .It Pa /tmp/rdist*  Name of temporary directory to use.  Default is
 temporary file for update lists  .B /tmp.
 .El  .SH FILES
 .Sh SEE ALSO  .nf
 .Xr sh 1 ,  .ta \w'/tmp/rdist*    'u
 .Xr csh 1 ,  distfile        \- input command file
 .Xr stat 2  $TMPDIR/rdist*  \- temporary file for update lists
 .Sh HISTORY  .fi
 The  .SH "SEE ALSO"
 .Nm rdist  .B sh(1),
 command appeared in  .B csh(1),
 .Bx 4.3 .  .B stat(2),
 .Sh DIAGNOSTICS  .B rsh(1c),
 A complaint about mismatch of rdist version numbers may really stem  .B rcmd(3)
 from some problem with starting your shell, e.g., you are in too many groups.  .SH DIAGNOSTICS
 .Sh BUGS  .SH NOTES
 Source files must reside on the local host where  .LP
 .Nm rdist  If the basename of a file  (the last component in the pathname)
 is executed.  is ".", then
 .Pp  .B rdist
 There is no easy way to have a special command executed after all files  assumes the remote (destination) name is a directory.
 in a directory have been updated.  i.e.
 .Pp  .B /tmp/.
   means that
   .B /tmp
   should be a directory on the remote host.
   .LP
   The following options are still recognized for backwards compatibility:
   .sp
   .RS
   \-v \-N \-O \-q \-b \-r \-R \-s \-w \-y \-h \-i \-x
   .RE
   .sp
   .SH BUGS
   Source files must reside on the local host where rdist is executed.
   .PP
 Variable expansion only works for name lists; there should be a general macro  Variable expansion only works for name lists; there should be a general macro
 facility.  facility.
 .Pp  .PP
 .Nm Rdist  .I Rdist
 aborts on files which have a negative mtime (before Jan 1, 1970).  aborts on files which have a negative mtime (before Jan 1, 1970).
 .Pp  .PP
 There should be a `force' option to allow replacement of non-empty directories  If a hardlinked file is listed more than once in the same target,
 by regular files or symlinks.  A means of updating file modes and owners  then
 of otherwise identical files is also needed.  .I rdist
   will report missing links.
   Only one instance of a link should be listed in each target.

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2