xref: /openbsd-src/usr.bin/rdist/rdist.1 (revision 2b0358df1d88d06ef4139321dd05bd5e05d91eaf)
1.\"	$OpenBSD: rdist.1,v 1.38 2009/02/15 15:11:35 jmc Exp $
2.\"
3.\" Copyright (c) 1983 Regents of the University of California.
4.\" All rights reserved.
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\"    notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\"    notice, this list of conditions and the following disclaimer in the
13.\"    documentation and/or other materials provided with the distribution.
14.\" 3. Neither the name of the University nor the names of its contributors
15.\"    may be used to endorse or promote products derived from this software
16.\"    without specific prior written permission.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28.\" SUCH DAMAGE.
29.\"
30.\"	$From: rdist.man,v 6.34 1996/01/29 22:37:19 mcooper Exp $
31.\"	@(#)rdist.1	6.6 (Berkeley) 5/13/86
32.\"
33.Dd $Mdocdate: February 15 2009 $
34.Dt RDIST 1
35.Os
36.Sh NAME
37.Nm rdist
38.Nd remote file distribution client program
39.Sh SYNOPSIS
40.Nm rdist
41.Bk -words
42.Op Fl DFnV
43.Op Fl Server
44.Op Fl A Ar num
45.Op Fl a Ar num
46.Op Fl c Ar mini_distfile
47.Oo
48.Fl d Ar var Ns = Ns Ar value
49.Oc
50.Op Fl f Ar distfile
51.Op Fl L Ar remote_logopts
52.Op Fl l Ar local_logopts
53.Op Fl M Ar maxproc
54.Op Fl m Ar host
55.Op Fl o Ar distopts
56.Op Fl P Ar rsh-path
57.Op Fl p Ar rdistd-path
58.Op Fl t Ar timeout
59.Op Ar name ...
60.Ek
61.Sh DESCRIPTION
62.Nm
63is a program to maintain identical copies of files over multiple hosts.
64It preserves the owner, group, mode, and mtime of files if possible and
65can update programs that are executing.
66.Pp
67.Nm
68reads commands from
69.Pa distfile
70to direct the updating of files and/or directories.
71If
72.Pa distfile
73is
74.Sq - ,
75the standard input is used.
76If no
77.Fl f
78option is present, the program looks first for
79.Pa distfile ,
80then
81.Pa Distfile ,
82to use as the input.
83If no names are specified on the command line,
84.Nm
85will update all of the files and directories listed in
86.Pa distfile .
87If the file
88.Pa /etc/Distfile
89exists,
90it will be run automatically by the clock daemon
91.Xr cron 8 ,
92via the system script
93.Xr daily 8 .
94.Pp
95If
96.Ar name
97is specified,
98it is taken to be the name of a file to be updated
99or the label of a command to execute.
100If label and file names conflict, it is assumed to be a label.
101These may be used together to update specific files using specific commands.
102.Pp
103.Nm
104uses a remote shell command to access each target host.
105By default,
106.Xr ssh 1
107is used unless overridden by the
108.Fl P
109option or the
110.Ev RSH
111environment variable.
112If the target host is the string
113.Dq localhost
114and the remote user name is the same as the local user name,
115.Nm
116will run the command:
117.Bd -literal -offset indent
118/bin/sh -c rdistd -S
119.Ed
120.Pp
121Otherwise,
122.Nm
123run will run the command:
124.Bd -literal -offset indent
125ssh \*(Lthost\*(Gt -l \*(Ltlogin_name\*(Gt rdistd -S
126.Ed
127.Pp
128.Ar host
129is the name of the target host;
130.Ar login_name
131is the name of the user to make the connection as.
132.Pp
133On each target host
134.Nm
135will attempt to run the command:
136.Bd -literal -offset indent
137rdistd -S
138.Ed
139.Pp
140Or if the
141.Fl p
142option was specified,
143.Nm
144will attempt to run the command:
145.Bd -literal -offset indent
146\*(Ltrdistd path\*(Gt -S
147.Ed
148.Pp
149If no
150.Fl p
151option is specified, or
152.Aq Ar rdistd path
153is a simple filename,
154.Xr rdistd 1
155or
156.Aq Ar rdistd path
157must be somewhere in the
158.Ev PATH
159of the user running
160.Nm
161on the remote (target) host.
162.Pp
163The options are as follows:
164.Bl -tag -width Ds
165.It Fl A Ar num
166Set the minimum number of free files (inodes) on a filesystem that must exist
167for
168.Nm
169to update or install a file.
170.It Fl a Ar num
171Set the minimum amount of free space (in bytes) on a filesystem that must exist
172for
173.Nm
174to update or install a file.
175.It Fl c Ar mini_distfile
176Forces
177.Nm
178to interpret the remaining arguments as a small distfile.
179The format is:
180.Bd -literal -offset indent
181$ rdist -c name ... [login@]host[:dest]
182.Ed
183.Pp
184The equivalent distfile is as follows:
185.Bd -literal -offset indent
186(  name ... ) -\*(Gt [login@]host
187	install	[dest] ;
188.Ed
189.It Fl D
190Enable copious debugging messages.
191.It Xo
192.Fl d Ar var Ns = Ns Ar value
193.Xc
194Define
195.Ar var
196to have
197.Ar value .
198This
199option is used to define or override variable definitions in
200.Pa distfile .
201.Ar value
202can be the empty string, one name, or a list of names surrounded by
203parentheses and separated by tabs and/or spaces.
204.It Fl F
205Do not fork any child
206.Nm
207processes.
208All clients are updated sequentially.
209.It Fl f Ar distfile
210Set the name of the distfile to
211.Ar distfile .
212If
213.Sq -
214(dash) is used then read from standard input (stdin).
215.It Fl L Ar remote_logopts
216Set remote logging options.
217See the section
218.Sx MESSAGE LOGGING
219for details on the syntax for
220.Ar remote_logopts .
221.It Fl l Ar local_logopts
222Set local logging options.
223See the section
224.Sx MESSAGE LOGGING
225for details on the syntax for
226.Ar local_logopts .
227.It Fl M Ar maxproc
228Set the maximum number of simultaneously running child
229.Nm
230processes to
231.Ar maxproc .
232The default is 4.
233.It Fl m Ar host
234Limit which machines are to be updated.
235Multiple
236.Fl m
237arguments can be given to limit updates to a subset of the hosts listed in
238.Pa distfile .
239.It Fl n
240Print the commands without executing them.
241This option is useful for debugging a distfile.
242.It Fl o Ar distopts
243Specify the dist options to enable.
244.Ar distopts
245is a comma separated list of options which are listed below.
246The valid values for
247.Ar distopts
248are:
249.Bl -tag -width Ds
250.It Ic chknfs
251Do not check or update files on the target host
252that reside on NFS filesystems.
253.It Ic chkreadonly
254Enable a check on the target host
255to see if a file resides on a read-only filesystem.
256If a file does, then no checking or updating of the file is attempted.
257.It Ic chksym
258If the target on the remote host is a symbolic link, but is not on the
259master host, the remote target will be left a symbolic link.
260This behavior is generally considered a bug in the original version of
261.Nm rdist ,
262but is present to allow compatibility with older versions.
263.It Ic compare
264Binary comparison.
265Perform a binary comparison and update files if they differ rather than
266comparing dates and sizes.
267.It Ic defgroup Ns Op = Ns Ic groupname
268If the group of a file to be transferred does not exist on the destination
269host, use the specified group instead.
270If groupname is not specified, the
271.Em bin
272group is used.
273.It Ic defowner Ns Op = Ns Ic owner
274If the owner of a file to be transferred does not exist on the destination
275host, use the specified owner instead.
276If owner is not specified, the user
277.Em bin
278is used.
279.It Ic follow
280Follow symbolic links.
281Copy the file that the link points to rather than the link itself.
282.It Ic history
283When
284.Ic savetargets
285and
286.Ic history
287are both defined then the target file that is updated is first renamed from
288.Pa file
289to
290.Pa file.NNN
291where NNN increases for each generation update.
292The first generation is 001, and the last is 999.
293After 999 generations, the counter is reset and stuck to 001,
294and 001 will get overwritten all the time.
295This is undesirable behavior, so some other method needs to be devised
296to clean up or limit the number of generations.
297.It Ic ignlnks
298Ignore unresolved links.
299.Nm
300will normally try to maintain the link structure of files being transferred
301and warn the user if all the links cannot be found.
302.It Ic nochkgroup
303Do not check group ownership of files that already exist.
304The file ownership is only set when the file is updated.
305.It Ic nochkmode
306Do not check file and directory permission modes.
307The permission mode is only set when the file is updated.
308.It Ic nochkowner
309Do not check user ownership of files that already exist.
310The file ownership is only set when the file is updated.
311.It Ic nodescend
312Do not descend into a directory.
313Normally,
314.Nm
315will recursively check directories.
316If this option is enabled, then any files listed in the file list in the
317distfile that are directories are not recursively scanned.
318Only the existence, ownership, and mode of the directory are checked.
319.It Ic noexec
320Automatically exclude executable binary files that are in
321.Xr a.out 5
322or
323.Xr elf 5
324format from being checked or updated.
325.It Ic numchkgroup
326Use the numeric group ID (GID) to check group ownership instead of
327the group name.
328.It Ic numchkowner
329Use the numeric user ID (UID) to check user ownership instead of
330the user name.
331.It Ic quiet
332Quiet mode.
333Files that are being modified are normally printed on standard output.
334This option suppresses that.
335.It Ic remove
336Remove extraneous files.
337If a directory is being updated, any files that exist on the remote host
338that do not exist in the master directory are removed.
339This is useful for maintaining truly identical copies of directories.
340.It Ic savetargets
341Save files that are updated instead of removing them.
342Any target file that is updated is first renamed from
343.Pa file
344to
345.Pa file.OLD .
346.It Ic sparse
347Enable checking for sparse files.
348One of the most common types of sparse files are those produced by
349.Xr db 3 .
350This option adds some additional processing overhead so it should
351only be enabled for targets likely to contain sparse files.
352.It Ic updateperm
353Do not send the whole file when the size and the modification time match.
354Instead, just update the ownership, group, and permissions as necessary.
355.It Ic verify
356Verify that the files are up to date on all the hosts.
357Any files that are out of date will be displayed
358but no files will be changed and no mail will be sent.
359.It Ic whole
360Whole mode.
361The whole file name is appended to the destination directory name.
362Normally, only the last component of a name is used when renaming files.
363This will preserve the directory structure of the files being
364copied instead of flattening the directory structure.
365For example, rdisting a list of files such as
366.Pa /p/dir1/f1
367and
368.Pa /p/dir2/f2
369to
370.Pa /tmp/dir
371would create files
372.Pa /tmp/dir/p/dir1/f1
373and
374.Pa /tmp/dir/p/dir2/f2
375instead of
376.Pa /tmp/dir/dir1/f1
377and
378.Pa /tmp/dir/dir2/f2 .
379.It Ic younger
380Younger mode.
381Files are normally updated if their
382.Em mtime
383and
384.Em size
385(see
386.Xr stat 2 )
387disagree.
388This option causes
389.Nm
390not to update files that are younger than the master copy.
391This can be used to prevent newer copies on other hosts from being replaced.
392A warning message is printed for files which are newer than the master copy.
393.El
394.It Fl P Ar rsh-path
395Set the path to the remote shell command.
396.Ar rsh-path
397may be a colon separated list of possible pathnames.
398In this case, the first component of the path to exist is used.
399For example,
400.Pa /usr/bin/ssh:/usr/bin/rsh
401or
402.Pa /usr/bin/ssh .
403.It Fl p Ar rdistd-path
404Set the path where the rdistd server is searched for on the target host.
405.It Fl Server
406This option is recognized to provide partial backward compatible support
407for older versions of
408.Nm
409which used this option to put
410.Nm
411into server mode.
412If
413.Nm
414is started with the
415.Fl Server
416command line option, it will attempt to exec (run) the old version of
417.Nm rdist ,
418.Pa /usr/bin/oldrdist .
419.It Fl t Ar timeout
420Set the timeout period,
421in seconds,
422for waiting for responses from the remote
423.Nm
424server.
425The default is 900 seconds.
426.It Fl V
427Print version information and exit.
428.El
429.Sh DISTFILES
430The
431.Pa distfile
432contains a sequence of entries that specify the files
433to be copied, the destination hosts, and what operations to perform
434to do the updating.
435Each entry has one of the following formats.
436.Bd -literal -offset indent
437\*(Ltvariable name\*(Gt = \*(Ltname list\*(Gt
438[ label: ] \*(Ltsource list\*(Gt -\*(Gt \*(Ltdestination list\*(Gt \*(Ltcommand list\*(Gt
439[ label: ] \*(Ltsource list\*(Gt :: \*(Lttimestamp file\*(Gt \*(Ltcommand list\*(Gt
440.Ed
441.Pp
442The first format is used for defining variables.
443The second format is used for distributing files to other hosts.
444The third format is used for making lists of files that have been changed
445since some given date.
446The
447.Ar source list
448specifies a list of files and/or directories on the local host which are to
449be used as the master copy for distribution.
450The
451.Ar destination list
452is the list of hosts to which these files are to be copied.
453Each file in the source list is added to a list of changes if the file
454is out of date on the host which is being updated (second format) or
455the file is newer than the
456.Ar timestamp file
457(third format).
458.Pp
459Newlines, tabs, and blanks are only used as separators and are
460otherwise ignored.
461Comments begin with
462.Sq #
463and end with a newline.
464.Pp
465Variables to be expanded begin with
466.Sq $
467followed by one character or a name enclosed in curly braces
468(see the examples at the end).
469.Pp
470Labels are optional.
471They are used to identify a specific command to execute
472(for example, allowing an update of a subset of a repository).
473.Pp
474The source and destination lists have the following format:
475.Bd -literal -offset indent
476\*(Ltname\*(Gt
477.Ed
478or
479.Bd -literal -compact -offset indent
480`(' \*(Ltzero or more names separated by whitespace\*(Gt `)'
481.Ed
482.Pp
483These simple lists can be modified by using one level of set addition,
484subtraction, or intersection like this:
485.Pp
486.Dl list - list
487or
488.Dl list + list
489or
490.Dl list & list
491.Pp
492If additional modifications are needed (e.g.\&
493.Do
494all servers and client machines except for the OSF/1 machines
495.Dc )
496then the list will have to be explicitly constructed in steps using
497.Dq temporary
498variables.
499.Pp
500The shell meta-characters `[', `]', `{', `}', `*', and `?'
501are recognized and expanded (on the local host only) in the same way as
502.Xr ksh 1 .
503They can be escaped with a backslash.
504The `~' character is also expanded in the same way as
505.Xr ksh 1
506but is expanded separately on the local and destination hosts.
507When the
508.Fl o Ar whole
509option is used with a file name that begins with `~', everything except the
510home directory is appended to the destination name.
511File names which do not begin with `/' or `~' use the destination user's
512home directory as the root directory for the rest of the file name.
513.Pp
514The command list consists of zero or more commands of the following
515format:
516.Bl -column "except_pat" "pattern listXX" "opt_dest_name" ";" -offset indent
517.It install Ta \*(Ltoptions\*(Gt Ta opt_dest_name Ta ;
518.It notify Ta \*(Ltname list\*(Gt Ta "" Ta ;
519.It except Ta \*(Ltname list\*(Gt Ta "" Ta ;
520.It except_pat Ta \*(Ltpattern list\*(Gt Ta "" Ta ;
521.It special Ta \*(Ltname list\*(Gt Ta string Ta ;
522.It cmdspecial Ta \*(Ltname list\*(Gt Ta string Ta ;
523.El
524.Pp
525The
526.Cm install
527command is used to copy out of date files and/or directories.
528Each source file is copied to each host in the destination list.
529Directories are recursively copied in the same way.
530.Ar opt_dest_name
531is an optional parameter to rename files.
532If no
533.Cm install
534command appears in the command list or the destination name is not specified,
535the source file name is used.
536Directories in the path name will be created if they
537do not exist on the remote host.
538The
539.Fl o Ar distopts
540option as specified above has the same semantics as
541on the command line except
542.Ar distopts
543only applies to the files in the source list.
544The login name used on the destination host is the same as the local host
545unless the destination name is of the format
546.Dq login@host .
547.Pp
548The
549.Cm notify
550command is used to mail the list of files updated (and any errors
551that may have occurred) to the listed names.
552If no `@' appears in the name, the destination host is appended to
553the name
554(e.g. name1@host, name2@host, ...).
555.Pp
556The
557.Cm except
558command is used to update all of the files in the source list
559.Sy except
560for the files listed in
561.Ar name list .
562This is usually used to copy everything in a directory except certain files.
563.Pp
564The
565.Cm except_pat
566command is like the
567.Cm except
568command except that
569.Ar pattern list
570is a list of basic regular expressions
571(see
572.Xr re_format 7
573for details).
574If one of the patterns matches some string within a file name, that file will
575be ignored.
576Note that since `\e' is a quote character, it must be doubled to become
577part of the regular expression.
578Variables are expanded in
579.Ar pattern list
580but not shell file pattern matching characters.
581To include a `$', it must be escaped with `\e'.
582.Pp
583The
584.Cm special
585command is used to specify
586.Xr sh 1
587commands that are to be executed on the remote host after the file in
588.Ar name list
589is updated or installed.
590If the
591.Ar name list
592is omitted then the shell commands will be executed for every file
593updated or installed.
594.Ar string
595starts and ends with `"' and can cross multiple lines in
596.Pa distfile .
597Multiple commands to the shell should be separated by `;'.
598Commands are executed in the user's home directory on the host
599being updated.
600The
601.Cm special
602command can be used, for example, to rebuild private databases
603after a program has been updated.
604The following environment variables are set for each
605.Cm special
606command:
607.Pp
608.Bl -tag -width "BASEFILE" -offset 3n -compact
609.It Ev FILE
610The full pathname of the local file that was just updated.
611.It Ev REMFILE
612The full pathname of the remote file that was just updated.
613.It BASEFILE
614The basename of the remote file that was just updated.
615.El
616.Pp
617The
618.Cm cmdspecial
619command is similar to the
620.Cm special
621command, except it is executed only when the entire command is completed
622instead of after each file is updated.
623The list of files is placed in the
624.Ev FILES
625environment variable.
626Each file name in
627.Ev FILES
628is separated by a
629.Sq :\&
630(colon).
631.Pp
632If a hostname ends in a
633.Sq +
634(plus sign),
635then the plus
636is stripped off and NFS checks are disabled.
637This is equivalent to disabling the
638.Fl o Ar chknfs
639option just for this one host.
640.Sh MESSAGE LOGGING
641.Nm
642uses a collection of predefined message
643.Em facilities
644that each contain a list of message
645.Em types
646specifying which types of messages to send to that facility.
647The local client
648and the remote server
649each maintain their own copy
650of what types of messages to log to what facilities.
651.Pp
652The
653.Fl l
654.Ar local_logopts
655option specifies the logging options to use locally;
656.Fl L
657.Ar remote_logopts
658specifies the logging options to pass to the remote server.
659.Pp
660Logging options should be of the form:
661.Pp
662.D1 facility=types:facility=types...
663.Pp
664The valid facility names are:
665.Bl -tag -width Ds -offset indent
666.It Ic file
667Log to a file.
668To specify the file name, use the format
669.Dq file=filename=types .
670For example:
671.Pp
672.Dl file=/tmp/rdist.log=all,debug
673.It Ic notify
674Use the internal
675.Nm
676.Ic notify
677facility.
678This facility is used in conjunction with the
679.Ic notify
680keyword in a
681.Pa distfile
682to specify what messages are mailed to the
683.Ic notify
684address.
685.It Ic stdout
686Messages to standard output.
687.It Ic syslog
688Use the
689.Xr syslogd 8
690facility.
691.El
692.Pp
693.Ar types
694should be a comma separated list of message types.
695Each message type specified enables that message level.
696This is unlike the
697.Xr syslog 3
698system facility which uses an ascending order scheme.
699The following are the valid types:
700.Bl -tag -width Ds -offset indent
701.It Ic all
702All but debug messages.
703.It Ic change
704Things that change.
705This includes files that are installed or updated in some way.
706.It Ic debug
707Debugging information.
708.It Ic ferror
709Fatal errors.
710.It Ic info
711General information.
712.It Ic nerror
713Normal errors that are not fatal.
714.It Ic notice
715General info about things that change.
716This includes things like making directories which are needed in order
717to install a specific target, but which are not explicitly specified in the
718.Pa distfile .
719.It Ic warning
720Warnings about errors which are not as serious as
721.Ic nerror
722type messages.
723.El
724.Pp
725Here is a sample command line option:
726.Bd -literal -offset indent
727-l stdout=all:syslog=change,notice:file=/tmp/rdist.log=all
728.Ed
729.Pp
730This entry will set local message logging to have all but debug
731messages sent to standard output, change and notice messages will
732be sent to
733.Xr syslog 3 ,
734and all messages will be written to the file
735.Pa /tmp/rdist.log .
736.Sh ENVIRONMENT
737.Bl -tag -width "TMPDIR"
738.It RSH
739Name of the default remote shell program to use.
740The default is
741.Xr ssh 1 .
742.It TMPDIR
743Name of the temporary directory to use.
744The default is
745.Pa /tmp .
746.El
747.Sh FILES
748.Bl -tag -width "$TMPDIR/rdist*XXX" -compact
749.It {d,D}istfile
750.Nm
751command file.
752.It /etc/Distfile
753System-wide
754.Nm
755command file.
756.It $TMPDIR/rdist*
757Temporary file for update lists.
758.El
759.Sh EXAMPLES
760The following is an example
761.Pa distfile :
762.Bd -literal -offset indent
763HOSTS = ( matisse root@arpa)
764
765FILES = ( /bin /lib /usr/bin /usr/games
766	/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
767	/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )
768
769EXLIB = ( Mail.rc aliases aliases.db crontab dshrc
770	sendmail.cf sendmail.hf sendmail.st uucp vfont )
771
772${FILES} -\*(Gt ${HOSTS}
773	install -oremove,chknfs ;
774	except /usr/lib/${EXLIB} ;
775	except /usr/games/lib ;
776	special /usr/lib/sendmail "/usr/lib/sendmail -bi" ;
777
778srcs:
779/usr/src/bin -\*(Gt arpa
780	except_pat ( \e\e.o\e$ /SCCS\e$ ) ;
781
782IMAGEN = (ips dviimp catdvi)
783
784imagen:
785/usr/local/${IMAGEN} -\*(Gt arpa
786	install /usr/local/lib ;
787	notify ralph ;
788
789sendmail.cf :: stamp.cory
790	notify root@cory ;
791.Ed
792.Pp
793Using the above
794.Pa distfile :
795.Pp
796Update everything that's out of date,
797making any relevant notifications:
798.Pp
799.Dl $ rdist
800.Pp
801Update files in
802.Pa /usr/src/bin
803to host
804.Dq arpa ,
805except for files with names ending
806.Dq .o
807or
808.Dq /SCCS :
809.Pp
810.Dl $ rdist srcs
811.Pp
812Update
813.Pa sendmail.cf
814if it's older than timestamp file
815.Pa stamp.cory ,
816notifying root@cory if an update has happened:
817.Pp
818.Dl $ rdist sendmail.cf
819.Sh SEE ALSO
820.Xr rdistd 1 ,
821.Xr rsh 1 ,
822.Xr sh 1 ,
823.Xr ssh 1 ,
824.Xr re_format 7 ,
825.Xr daily 8 ,
826.Xr syslogd 8
827.Sh STANDARDS
828The options
829.Op Fl bhiNOqRrsvwxy
830are still recognized for backwards compatibility.
831.Sh CAVEATS
832If the basename of a file
833(the last component in the pathname)
834is
835.Sq .\& ,
836.Nm
837assumes the remote (destination) name is a directory.
838That is,
839.Pa /tmp/.\&
840means that
841.Pa /tmp
842should be a directory on the remote host.
843.Sh BUGS
844Source files must reside on the local host where
845.Nm
846is executed.
847.Pp
848Variable expansion only works for name lists;
849there should be a general macro facility.
850.Pp
851.Nm
852aborts on files which have a negative mtime (before Jan 1, 1970).
853.Pp
854If a hardlinked file is listed more than once in the same target,
855.Nm
856will report missing links.
857Only one instance of a link should be listed in each target.
858.Pp
859The
860.Sy defowner ,
861.Sy defgroup ,
862and
863.Sy updateperm
864options are extensions to the 6.1.0 protocol and will not work with earlier
865versions of rdist 6.
866