Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Apropos / Subsearch:
optional field

nrdist(1)							    nrdist(1)


  nrdist - Remote file distribution client program


  /usr/bin/nrdist [-DFn] [-A num] [-a num] [-d var=value] [-l <local
  logopts>] [-L	<remote	logopts>] [-f distfile]	[-M maxproc] [-m host]
  [-odistopts] [-t timeout] [name...]

  /usr/bin/nrdist -DFn	-c  name ... [login@]host[:dest]

  /usr/bin/nrdist -Server

  /usr/bin/nrdist -V


  -A num
      Sets the minimum number of free files (inodes) on	a filesystem that
      must exist for nrdist to update or install a file.

  -a num
      Sets the minimum amount of free space (in	bytes) on a filesystem that
      must exist for nrdist to update or install a file.

  -D  Turns on debugging output.

  -d var=value
      Defines var to have value.  This option is used to define	or override
      variable definitions in the distfile. The	value parameter	can be an
      empty string, one	name, or a list	of names surrounded by parentheses
      and separated by tabs or spaces.

  -F  Does not fork any	child nrdist processes.	All clients are	updated

  -f distfile
      Sets the name of the distfile to use to be distfile.  If distfile	is
      specified	as - (dash), read from standard	input (stdin).

  -l logopts
      Sets local logging options. See MESSAGE LOGGING for details on the syn-
      tax for logopts.

  -L logopts
      Sets remote logging options. The logopts is the same as for local	log-
      ging except the values are passed	to the remote server (rdistd). See
      MESSAGE LOGGING for details on the syntax	for logopts.

  -M num
      Sets the maximum number of simultaneously	running	child nrdist
      processes	to num.	The default is 4.

  -m machine
      Limits which machines are	to be updated. Multiple	-m arguments can be
      given to limit updates to	a subset of the	hosts listed in	the distfile.
      You can also specify an IPv6 address or addresses	for machine.

  -n  Prints the commands without executing them. This option is useful	for
      debugging	distfile.

      Specifies	the dist options to enable. The	distopts is a comma-separated
      list of the following options:

	  Verify that the files	are up to date on all the hosts. Any files
	  that are out of date will be displayed but no	files will be changed
	  nor any mail sent.

	  Whole	mode. The whole	file name is appended to the destination
	  directory name.  Normally, only the last component of	a name is
	  used when renaming files. This will preserve the directory struc-
	  ture of the files being copied instead of flattening the directory
	  structure. For example, rdisting a list of files such	as
	  /path/dir1/f1	and /path/dir2/f2 to /tmp/dir would create files
	  /tmp/dir/path/dir1/f1	and /tmp/dir/path/dir2/f2 instead of
	  /tmp/dir/dir1/f1 and /tmp/dir/dir2/f2.

	  Automatically	exclude	executable files that are in a.out(4) format
	  from being checked or	updated.

	  Younger mode.	Files are normally updated if their mtime and size
	  (see stat(2))	disagree. This option causes nrdist not	to update
	  files	that are younger than the master copy. This can	be used	to
	  prevent newer	copies on other	hosts from being replaced. A warning
	  message is printed for files which are newer than the	master copy.

	  Binary comparison.  Perform a	binary comparison and update files if
	  they differ rather than comparing dates and sizes.

	  Follow symbolic links.  Copy the file	that the link points to
	  rather than the link itself.

	  Ignore unresolved links.  The	nrdist command will normally try to
	  maintain the link structure of files being transferred and warn the
	  user if all the links	cannot be found.

	  Do not check or update files on target host that reside on NFS

	  Enable check on target host to see if	a file resides on a read-only
	  filesystem. If a file	does, then no checking or updating of the
	  file is attempted.

	  If the target	on the remote host is a	symbolic link, but is not on
	  the master host, the remote target will be left a symbolic link.
	  This behavior	is generally considered	a bug in the original version
	  of nrdist, but is present to allow compatibility with	older

	  Quiet	mode. Files that are being modified are	normally printed on
	  standard output. This	option suppresses this.

	  Remove extraneous files.  If a directory is being updated, any
	  files	that exist on the remote host that do not exist	in the master
	  directory are	removed. This is useful	for maintaining	truly identi-
	  cal copies of	directories.

	  Do not check user ownership of files that already exist. The file
	  ownership is only set	when the file is updated.

	  Do not check group ownership of files	that already exist. The	file
	  ownership is only set	when the file is updated.

	  Do not check file and	directory permission modes. The	permission
	  mode is only set when	the file is updated.

	  Do not descend into a	directory. Normally nrdist will	recursively
	  check	directories.  If this option is	enabled, any files listed in
	  the file list	in the distfile	that are directories are not recur-
	  sively scanned. Only the existence, ownership, and mode of the
	  directory are	checked.

	  Use the numeric group	id (gid) to check group	ownership instead of
	  the group name.

	  Use the numeric user id (uid)	to check user ownership	instead	of
	  the user name.

	  Save files that are updated instead of removing them.	Any target
	  file that is updates is first	rename from file to file.OLD.

  -t timeout
      Sets the timeout period (in seconds) for waiting for responses from the
      remote nrdist server. The	default	is 900 seconds.

  -V  Print version information	and exit.


  The nrdist command is	a program to maintain identical	copies of files	over
  multiple hosts. It preserves the owner, group, mode, and modification	time
  of files if possible and can update programs that are	executing. The nrdist
  command reads	commands from distfile to direct the updating of files or
  directories, or both.	If distfile is a - (dash), the standard	input is

  If no	-f option is specified,	the program looks first	for distfile, then
  Distfile to use as the input.	If no file names are specified on the command
  line,	nrdist updates all of the files	and directories	listed in distfile.
  Otherwise, the argument is read as the name of a file	to be updated or a
  command to execute. If the name of the file specified	by the file argument
  is the same as the name of a command,	the nrdist command treats the file
  name as a command.  These may	be used	together to update specific files
  using	specific commands.

  The -c option	forces nrdist to interpret the remaining arguments as a	small
  distfile. The	equivalent distfile is as follows.

       ( name ... ) ->&gt; [login@]host
       install [dest] ;

  If you want to specify an IPv6 address for host, you must prefix the
  address with the \[ (backslash, left bracket)	characters and terminate the
  address with the \] (backslash, right	bracket) characters.

  The -Server option provides partial backward compatible support for older
  versions of nrdist that used this option to put nrdist into server mode. If
  nrdist is started with the -Server command line option, it attempts to exec
  (run)	the old	version	of rdist. This option will only	work if	nrdist was
  compiled with	the location of	the old	rdist (usually /usr/old/rdist) and
  that program is available at run time.

  The nrdist command uses the rcmd(3) interface	to access each target host.
  The nrdist command attempts to run the rdistd	-S command on each target
  host.	The nrdist command does	not specify the	absolute pathname to rdistd
  on the target	host in	order to avoid imposing	any policy on where rdistd
  must be installed on target host. Therefore, rdistd must be somewhere	in
  the $PATH of the user	running	nrdist on the remote (target) host.


  The nrdist command uses a collection of predefined message facilities	that
  each contain a list of message types specifying which	types of messages to
  send to that facility. The local client (nrdist) and the remote server
  (rdistd) each	maintain their own copy	of what	types of messages to log to
  what facilities.

  The -l logopts option	to nrdist tells	nrdist what logging options to use
  locally. The -L logopts option to nrdist tells nrdist	what logging options
  to pass to the remote	rdistd server.

  The form of logopts should be	of form


  The valid facility names are:

      Sends messages to	standard output.

      Sends messages to	a file.	 To specify the	file name, use the following


      For example, file=/tmp/rdist.log=all,debug.

      Uses the syslogd(8) facility.

      Uses the internal	nrdist notify facility.	This facility is used in con-
      junction with the	notify keyword in a distfile to	specify	what messages
      are mailed to the	notify address.

  The types should be a	comma separated	list of	message	types.	Each message
  type specified enables that message level.  This is unlike the syslog(3)
  system facility which	uses an	ascending order	scheme.	The following are the
  valid	types:

      Things that change.  This	includes files that are	installed or updated
      in some way.

      General information.

      General info about things	that change. This includes things like making
      directories which	are needed in order to install a specific target, but
      which are	not explicitly specified in the	distfile.

      Normal errors that are not fatal.

      Fatal errors.

      Warnings about errors which are not as serious as	nerror type messages.

      Debugging	information.

  all All but debug messages.

  Here is a sample command line	option:

       -l stdout=all:syslog=change,notice:file=/tmp/rdist.log=all

  This entry will set local message logging to have all	but debug messages
  sent to standard output, change and notice messages will be sent to sys-
  log(3), and all messages will	be written to the file /tmp/rdist.log.


  The distfile contains	a sequence of entries that specify the files to	be
  copied, the destination hosts, and what operations to	perform	to do the
  updating. Each entry has one of the following	formats.

       <variable_name>&gt; = <name_list>&gt;
       [label:]	<&lt;source_list>&gt; ->&gt; <destination_list>&gt; <&lt;command_list>&gt;
       [label:]	<&lt;source	list>&gt; :: <timestamp_file>&gt; <&lt;command_list>&gt;

  The first format is used for defining	variables. The second format is	used
  for distributing files to other hosts. The third format is used for making
  lists	of files that have been	changed	since some given date.

  The source_list specifies a list of files or directories on the local	host
  which	are to be used as the master copy for distribution. The
  destination_list is the list of hosts	to which these files are to be
  copied.  Each	file in	the source_list	is added to a list of changes if the
  file is out of date on the host which	is being updated (second format) or
  the file is newer than the timestamp_file (third format).

  Labels are optional. They are	used to	identify a command for partial

  Newlines, tabs, and blanks are only used as separators and are otherwise
  ignored. Comments begin with a # (number sign) and end with a	newline.

  Variables to be expanded begin with a	$ (dollar sign)	followed by one	char-
  acter	or a name enclosed in curly braces (see	EXAMPLES).

  The source and destination lists one of the following	formats:

       ( <&lt;zero or more names separated by white-space>&gt; )

  If you want to specify an IPv6 address or addresses for destination_list,
  you must enclose each	address	with the [] (bracket) characters.

  These	simple lists can be modified by	using one level	of set addition, sub-
  traction, or intersection as follows:

       list - list
       list + list
       list &&amp; list

  If additional	modifications are needed (for example, all servers and client
  machines except for the Tru64	UNIX machines),	the list will have to be
  explicitly constructed in steps using	temporary variables.

  The shell meta-characters [,],,},*, and ? are	recognized and expanded	(on
  the local host only) in the same way as csh(1). They can be escaped with a
  \ (backslash).  The ~	(tilde)	character is also expanded in the same way as
  csh, but is expanded separately on the local and destination hosts. When
  the -owhole option is	used with a file name that begins with a ~, every-
  thing	except the home	directory is appended to the destination name. File
  names	that do	not begin with a / (slash) or a	~ use the destination user's
  home directory as the	root directory for the rest of the file	name.

  The command list consists of zero or more commands of	the following format:

       install	    <options>&gt;	    opt_dest_name  ;
       notify	    <name_list>&gt;	    ;
       except	    <name_list>&gt;	    ;
       except_pat   <pattern_list>&gt;  ;
       special	    <name_list>&gt;	    string  ;
       cmdspecial   <name_list>&gt;	    string  ;

  The install command is used to copy out-of-date files	or directories.	Each
  source file is copied	to each	host in	the destination	list. Directories are
  recursively copied in	the same way. The opt_dest_name	argument is an
  optional argument to rename files.  If no install command appears in the
  command list or the destination name is not specified, the source file name
  is used.

  Directories in the path name are created if they do not exist	on the remote
  host.	The -odistopts option, as specified under OPTIONS, has the same
  semantics as on the command line except they only apply to the files in the
  source list.	The login name used on the destination host is the same	as
  the local host unless	the destination	name is	of the format login@host.

  The notify command is	used to	mail the list of files updated (and any
  errors that may have occurred) to the	listed names. If no @ (at sign)
  appears in the name, the destination host is appended	to the name (for
  example, name1@host, name2@host, ...).

  The except command is	used to	update all of the files	in the source list
  except for the files listed in name_list. This is usually used to copy
  everything in	a directory, except certain files.

  The except_pat command is like the except command except that	pattern_list
  is a list of regular expressions (see	ed(1) for details). If one of the
  patterns matches some	string within a	file name, that	file will be ignored.
  Note that since \ is a quote character, it must be doubled to	become part
  of the regular expression.  Variables	are expanded in	pattern_list, but not
  shell	file pattern matching characters.  To include a	$ (dollar sign), it
  must be escaped with \ (backslash).

  The special command is used to specify sh commands that are to be executed
  on the remote	host after the file in name_list is updated or installed. If
  the name_list	is omitted, the	shell commands will be executed	for every
  file updated or installed.  string starts and	ends with " (double quote)
  and can cross	multiple lines in distfile. Separate multiple commands to the
  shell	with a ; (semicolon). Commands are executed in the user's home direc-
  tory on the host being updated. The special command can be used to rebuild
  private databases after a program has	been updated. The following environ-
  ment variables are set for each special command:

      The full pathname	of the local file that was just	updated.

      The full pathname	of the remote file that	was just updated.

  The cmdspecial command is similar to the special command, except it is exe-
  cuted	only when the entire command is	completed instead of after each	file
  is updated. The list of files	is placed in the environment variable $FILES.
  Each file name in $FILES is separated	by a ; (semicolon).

  If a hostname	ends in	a + (plus sign), the plus sign is stripped off and
  NFS checks are disabled. This	is equivalent to disabling the -ochknfs
  option just for this one host.

  The following	is an example of a distfile:

       HOSTS = ( matisse root@arpa)

       FILES = ( /bin /lib /usr/bin /usr/games
	      /usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )

       EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc
	      sendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont )

       ${FILES}	-> ${HOSTS}
	      install -oremove,chknfs ;
	      except /usr/lib/${EXLIB} ;
	      except /usr/games/lib ;
	      special /usr/lib/sendmail	"/usr/lib/sendmail -bz"	;

       /usr/src/bin -> arpa
	      except_pat ( \\.o\$ /SCCS\$ ) ;

       IMAGEN =	(ips dviimp catdvi)

       /usr/local/${IMAGEN} -> arpa
	      install /usr/local/lib ;
	      notify ralph ;

       ${FILES}	:: stamp.cory
	      notify root@cory ;


  If the basename of a file (the last component	in the pathname) is .
  (period), nrdist assumes the remote (destination) name is a directory. For
  example, /tmp/. means	that /tmp is a directory on the	remote host.

  The following	options	are still recognized for backwards compatibility:

       -v -N -O	-q -b -r -R -s -w -y -h	-i -x


      Name of temporary	directory to use.  Default is /tmp.


      Input command file.

      Temporary	file for update	lists.


  Commands:  sh(1), csh(1), rdist(1)

  Functions:  stat(2), rcmd(3)