Annotation of 43BSDReno/usr.bin/rdist/rdist.1, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1985, 1990 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted provided
        !             5: .\" that: (1) source distributions retain this entire copyright notice and
        !             6: .\" comment, and (2) distributions including binaries display the following
        !             7: .\" acknowledgement:  ``This product includes software developed by the
        !             8: .\" University of California, Berkeley and its contributors'' in the
        !             9: .\" documentation or other materials provided with the distribution and in
        !            10: .\" all advertising materials mentioning features or use of this software.
        !            11: .\" Neither the name of the University nor the names of its contributors may
        !            12: .\" be used to endorse or promote products derived from this software without
        !            13: .\" specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"     @(#)rdist.1    6.9 (Berkeley) 7/24/90
        !            19: .\"
        !            20: .Dd July 24, 1990
        !            21: .Dt RDIST 1
        !            22: .Os BSD 4.3
        !            23: .Sh NAME
        !            24: .Nm rdist
        !            25: .Nd remote file distribution program
        !            26: .Sh SYNOPSIS
        !            27: .Nm rdist
        !            28: .Op Fl nqbRhivwy
        !            29: .Op Fl f Ar distfile
        !            30: .Op Fl d Ar var=value
        !            31: .Op Fl m host
        !            32: .Op Ar name ...
        !            33: .Pp
        !            34: .Nm rdist
        !            35: .Op Fl nqbRhivwy
        !            36: .Fl c
        !            37: .Ar name ...
        !            38: .Cx Op login@
        !            39: .Ar host
        !            40: .Op :dest
        !            41: .Cx
        !            42: .Sh DESCRIPTION
        !            43: .Nm Rdist
        !            44: is a program to maintain identical copies of files over multiple hosts.
        !            45: It preserves the owner, group, mode, and mtime of files if possible and
        !            46: can update programs that are executing.
        !            47: .Nm Rdist
        !            48: reads commands from
        !            49: .Ar distfile
        !            50: to direct the updating of files and/or directories.
        !            51: .Pp
        !            52: Options specific to the first SYNOPSIS form:
        !            53: .Pp
        !            54: .Tw Fl
        !            55: .Tp Fl 
        !            56: If
        !            57: .Ar distfile
        !            58: is
        !            59: .Sq Fl ,
        !            60: the standard input is used.
        !            61: .Tp Cx Fl f
        !            62: .Cx \&\ \&
        !            63: .Ar distfile
        !            64: .Cx
        !            65: Use the specified
        !            66: .Ar distfile.
        !            67: .Tp
        !            68: .Pp
        !            69: If either the
        !            70: .Fl f
        !            71: or
        !            72: .Sq Fl
        !            73: option is not specified, the program looks first for
        !            74: .Dq Pa distfile ,
        !            75: then
        !            76: .Dq Pa Distfile
        !            77: to use as the input.
        !            78: If no names are specified on the command line,
        !            79: .Nm rdist
        !            80: will update all of the files and directories listed in
        !            81: .Ar distfile  .
        !            82: Otherwise, the argument is taken to be the name of a file to be updated
        !            83: or the label of a command to execute. If label and file names conflict,
        !            84: it is assumed to be a label.
        !            85: These may be used together to update specific files
        !            86: using specific commands.
        !            87: .Pp
        !            88: Options specific to the second SYNOPSIS form:
        !            89: .Pp
        !            90: .Tp Fl c
        !            91: Forces
        !            92: .Nm rdist
        !            93: to interpret the remaining arguments as a small
        !            94: .Ar distfile  .
        !            95: .Pp
        !            96: The equivalent distfile is as follows.
        !            97: .Pp
        !            98: .Df I
        !            99: .Pq Ar name ...
        !           100: .Li ->
        !           101: .Op Ar login@
        !           102: .Ar host
        !           103: .Df I
        !           104: .Li install
        !           105: .Op Ar dest ;
        !           106: .De
        !           107: .De
        !           108: .Tp
        !           109: .Pp
        !           110: Options common to both forms:
        !           111: .Pp
        !           112: .Tw Ic
        !           113: .Tp Cx Fl d
        !           114: .Cx \&\ \&
        !           115: .Ar var=value
        !           116: .Cx
        !           117: Define
        !           118: .Ar var
        !           119: to have
        !           120: .Ar value  .
        !           121: The
        !           122: .Fl d
        !           123: option is used to define or override variable definitions in the
        !           124: .Ar distfile  .
        !           125: .Ar Value
        !           126: can be the empty string, one name, or a list of names surrounded by
        !           127: parentheses and separated by tabs and/or spaces.
        !           128: .Tp Cx Fl m
        !           129: .Cx \&\ \&
        !           130: .Ar host
        !           131: .Cx
        !           132: Limit which machines are to be updated. Multiple
        !           133: .Fl m
        !           134: arguments can be given to limit updates to a subset of the hosts listed the
        !           135: .Ar distfile  .
        !           136: .Tp Fl n
        !           137: Print the commands without executing them. This option is
        !           138: useful for debugging
        !           139: .Ar distfile  .
        !           140: .Tp Fl q
        !           141: Quiet mode. Files that are being modified are normally
        !           142: printed on standard output. The
        !           143: .Fl q
        !           144: option suppresses this.
        !           145: .Tp Fl R
        !           146: Remove extraneous files. If a directory is being updated, any files that exist
        !           147: on the remote host that do not exist in the master directory are removed.
        !           148: This is useful for maintaining truely identical copies of directories.
        !           149: .Tp Fl h
        !           150: Follow symbolic links. Copy the file that the link points to rather than the
        !           151: link itself.
        !           152: .Tp Fl i
        !           153: Ignore unresolved links.
        !           154: .Nm Rdist
        !           155: will normally try to maintain the link structure of files being transfered
        !           156: and warn the user if all the links cannot be found.
        !           157: .Tp Fl v
        !           158: Verify that the files are up to date on all the hosts. Any files
        !           159: that are out of date will be displayed but no files will be changed
        !           160: nor any mail sent.
        !           161: .Tp Fl w
        !           162: Whole mode. The whole file name is appended to the destination directory
        !           163: name. Normally, only the last component of a name is used when renaming files.
        !           164: This will preserve the directory structure of the files being
        !           165: copied instead of flattening the directory structure. For example,
        !           166: renaming a list of files such as ( dir1/f1 dir2/f2 ) to dir3 would create
        !           167: files dir3/dir1/f1 and dir3/dir2/f2 instead of dir3/f1 and dir3/f2.
        !           168: .Tp Fl y
        !           169: Younger mode. Files are normally updated if their
        !           170: .Ar mtime
        !           171: and
        !           172: .Ar size
        !           173: (see
        !           174: .Xr stat  2  )
        !           175: disagree. The
        !           176: .Fl y
        !           177: option causes
        !           178: .Nm rdist
        !           179: not to update files that are younger than the master copy.
        !           180: This can be used
        !           181: to prevent newer copies on other hosts from being replaced.
        !           182: A warning message is printed for files which are newer than the master copy.
        !           183: .Tp Fl b
        !           184: Binary comparison. Perform a binary comparison and update files if they differ
        !           185: rather than comparing dates and sizes.
        !           186: .Tp
        !           187: .Pp
        !           188: .Ar Distfile
        !           189: contains a sequence of entries that specify the files
        !           190: to be copied, the destination hosts, and what operations to perform
        !           191: to do the updating. Each entry has one of the following formats.
        !           192: .Pp
        !           193: .Ds I
        !           194: <variable name> `=' <name list>
        !           195: [label:]<source list> `\->' <destination list> <command list>
        !           196: [label:]<source list> `::' <time_stamp file> <command list>
        !           197: .De
        !           198: .Pp
        !           199: The first format is used for defining variables.
        !           200: The second format is used for distributing files to other hosts.
        !           201: The third format is used for making lists of files that have been changed
        !           202: since some given date.
        !           203: The
        !           204: .Ar source list
        !           205: specifies a
        !           206: list of files and/or directories on the local host which are to be used
        !           207: as the master copy for distribution.
        !           208: The
        !           209: .Ar destination list
        !           210: is the list of hosts to which these files are to be
        !           211: copied.  Each file in the source list is added to a list of changes
        !           212: if the file is out of date on the host which is being updated (second format) or
        !           213: the file is newer than the time stamp file (third format).
        !           214: .Pp
        !           215: Labels are optional. They are used to identify a command for partial updates.
        !           216: .Pp
        !           217: Newlines, tabs, and blanks are only used as separators and are
        !           218: otherwise ignored. Comments begin with `#' and end with a newline.
        !           219: .Pp
        !           220: Variables to be expanded begin with `$' followed by one character or
        !           221: a name enclosed in curly braces (see the examples at the end).
        !           222: .Pp
        !           223: The source and destination lists have the following format:
        !           224: .Pp
        !           225: .Ds I
        !           226: <name>
        !           227: .De
        !           228: or
        !           229: .Ds I
        !           230: `(' <zero or more names separated by white-space> `)'
        !           231: .De
        !           232: .Pp
        !           233: The shell meta-characters `[', `]', `{', `}', `*', and `?'
        !           234: are recognized and expanded (on the local host only) in the same way as
        !           235: .Xr csh  1  .
        !           236: They can be escaped with a backslash.
        !           237: The `~' character is also expanded in the same way as
        !           238: .Xr csh 1
        !           239: but is expanded separately on the local and destination hosts.
        !           240: When the
        !           241: .Fl w
        !           242: option is used with a file name that begins with `~', everything except the
        !           243: home directory is appended to the destination name.
        !           244: File names which do not begin with `/' or `~' use the destination user's
        !           245: home directory as the root directory for the rest of the file name.
        !           246: .Pp
        !           247: The command list consists of zero or more commands of the following
        !           248: format.
        !           249: .Ds I
        !           250: .Cw except_patx pattern\ listx
        !           251: .Cl `install'  <options>       opt_dest_name `;'
        !           252: .Cl `notify'   <name list>     `;'
        !           253: .Cl `except'   <name list>     `;'
        !           254: .Cl `except_pat'       <pattern list>  `;'
        !           255: .Cl `special'  <name list>     string `;'
        !           256: .Cw
        !           257: .De
        !           258: .Pp
        !           259: The
        !           260: .Ic install
        !           261: command is used to copy out of date files and/or directories.
        !           262: Each source file is copied to each host in the destination list.
        !           263: Directories are recursively copied in the same way.
        !           264: .Ar Opt_dest_name
        !           265: is an optional parameter to rename files.
        !           266: If no
        !           267: .Ic install
        !           268: command appears in the command list or
        !           269: the destination name is not specified,
        !           270: the source file name is used.
        !           271: Directories in the path name will be created if they
        !           272: do not exist on the remote host.
        !           273: To help prevent disasters, a non-empty directory on a target host will
        !           274: never be replaced with a regular file or a symbolic link.
        !           275: However, under the `\-R' option a non-empty directory will be removed
        !           276: if the corresponding filename is completely absent on the master host.
        !           277: The
        !           278: .Ar options
        !           279: are `\-R', `\-h', `\-i', `\-v', `\-w', `\-y', and `\-b'
        !           280: and have the same semantics as
        !           281: options on the command line except they only apply to the files
        !           282: in the source list.
        !           283: The login name used on the destination host is the same as the local host
        !           284: unless the destination name is of the format ``login@host".
        !           285: .Pp
        !           286: The
        !           287: .Ic notify
        !           288: command is used to mail the list of files updated (and any errors
        !           289: that may have occured) to the listed names.
        !           290: If no `@' appears in the name, the destination host is appended to
        !           291: the name
        !           292: (e.g., name1@host, name2@host, ...).
        !           293: .Pp
        !           294: The
        !           295: .Ic except
        !           296: command is used to update all of the files in the source list
        !           297: .Ic except
        !           298: for the files listed in
        !           299: .Ar name list  .
        !           300: This is usually used to copy everything in a directory except certain files.
        !           301: .Pp
        !           302: The
        !           303: .Ic except_pat
        !           304: command is like the
        !           305: .Ic except
        !           306: command except that
        !           307: .Ar pattern list
        !           308: is a list of regular expressions
        !           309: (see
        !           310: .Xr ed  1
        !           311: for details).
        !           312: If one of the patterns matches some string within a file name, that file will
        !           313: be ignored.
        !           314: Note that since `\e' is a quote character, it must be doubled to become
        !           315: part of the regular expression.  Variables are expanded in
        !           316: .Ar pattern list
        !           317: but not shell file pattern matching characters.  To include a `$', it
        !           318: must be escaped with `\e'.
        !           319: .Pp
        !           320: The
        !           321: .Ic special
        !           322: command is used to specify
        !           323: .Xr sh  1
        !           324: commands that are to be executed on the
        !           325: remote host after the file in
        !           326: .Ar name list
        !           327: is updated or installed.
        !           328: If the
        !           329: .Ar name list
        !           330: is omitted then the shell commands will be executed
        !           331: for every file updated or installed.  The shell variable `FILE' is set
        !           332: to the current filename before executing the commands in
        !           333: .Ar string  .
        !           334: .Ar String
        !           335: starts and ends with `"' and can cross multiple lines in
        !           336: .Ar distfile .
        !           337: Multiple commands to the shell should be separated by `;'.
        !           338: Commands are executed in the user's home directory on the host
        !           339: being updated.
        !           340: The
        !           341: .Ar special
        !           342: command can be used to rebuild private databases, etc.
        !           343: after a program has been updated.
        !           344: .Pp
        !           345: The following is a small example:
        !           346: .Pp
        !           347: .Ds I
        !           348: HOSTS = ( matisse root@arpa )
        !           349: .sp
        !           350: FILES = ( /bin /lib /usr/bin /usr/games
        !           351: \t/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
        !           352: \t/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )
        !           353: .sp
        !           354: EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc
        !           355: \tsendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont )
        !           356: .sp
        !           357: ${FILES} -> ${HOSTS}
        !           358: \tinstall -R ;
        !           359: \texcept /usr/lib/${EXLIB} ;
        !           360: \texcept /usr/games/lib ;
        !           361: \tspecial /usr/lib/sendmail "/usr/lib/sendmail -bz" ;
        !           362: .sp
        !           363: srcs:
        !           364: /usr/src/bin -> arpa
        !           365: \texcept_pat ( \e\e.o\e$ /SCCS\e$ ) ;
        !           366: .sp
        !           367: IMAGEN = (ips dviimp catdvi)
        !           368: .sp
        !           369: imagen:
        !           370: /usr/local/${IMAGEN} -> arpa
        !           371: \tinstall /usr/local/lib ;
        !           372: \tnotify ralph ;
        !           373: .sp
        !           374: ${FILES} :: stamp.cory
        !           375: \tnotify root@cory ;
        !           376: .De
        !           377: .Sh FILES
        !           378: .Dw /tmp/rdist*
        !           379: .Di L
        !           380: .Dp Pa distfile
        !           381: input command file
        !           382: .Dp Pa /tmp/rdist*
        !           383: temporary file for update lists
        !           384: .Dp
        !           385: .Sh SEE ALSO
        !           386: .Xr sh 1 ,
        !           387: .Xr csh 1 ,
        !           388: .Xr stat 2
        !           389: .Sh HISTORY
        !           390: The
        !           391: .Nm
        !           392: command appeared in 4.3 BSD.
        !           393: .Sh DIAGNOSTICS
        !           394: A complaint about mismatch of rdist version numbers may really stem
        !           395: from some problem with starting your shell, e.g., you are in too many groups.
        !           396: .Sh BUGS
        !           397: Source files must reside on the local host where
        !           398: .Nm rdist
        !           399: is executed.
        !           400: .Pp
        !           401: There is no easy way to have a special command executed after all files
        !           402: in a directory have been updated.
        !           403: .Pp
        !           404: Variable expansion only works for name lists; there should be a general macro
        !           405: facility.
        !           406: .Pp
        !           407: .Nm Rdist
        !           408: aborts on files which have a negative mtime (before Jan 1, 1970).
        !           409: .Pp
        !           410: There should be a `force' option to allow replacement of non-empty directories
        !           411: by regular files or symlinks.  A means of updating file modes and owners
        !           412: of otherwise identical files is also needed.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.