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