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