Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RDIST(1)		    General Commands Manual		      RDIST(1)

NAME
       rdist --	remote file distribution program

SYNOPSIS
       rdist [-nqbRhivwy] [-f distfile]	[-d var=value] [-m -host] [name	...]
       rdist [-nqbRhivwy] -c name ... [login@]host[:dest]

DESCRIPTION
       Rdist  is a program to maintain identical copies	of files over multiple
       hosts.  It preserves the	owner, group, mode, and	mtime of files if pos-
       sible and can update programs that are executing.  Rdist	reads commands
       from distfile to	direct the updating of files and/or directories.

       Options specific	to the first SYNOPSIS form:

       -       If distfile is `-', the standard	input is used.

       -f distfile
	       Use the specified distfile.

       If either the -f	or `-' option is  not  specified,  the	program	 looks
       first for "distfile", then "Distfile" to	use as the input.  If no names
       are  specified  on the command line, rdist will update all of the files
       and directories listed in distfile.  Otherwise, the argument  is	 taken
       to be the name of a file	to be updated or the label of a	command	to ex-
       ecute.  If  label and file names	conflict, it is	assumed	to be a	label.
       These may be used together to update specific files using specific com-
       mands.

       Options specific	to the second SYNOPSIS form:

       -c	   Forces rdist	to interpret  the  remaining  arguments	 as  a
		   small distfile.

		   The equivalent distfile is as follows.

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

       Options common to both forms:

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

       -d var=value
		   Define var to have value.  The -d option is used to	define
		   or  override	 variable  definitions in the distfile.	 Value
		   can be the empty string, one	name, or a list	of names  sur-
		   rounded by parentheses and separated	by tabs	and/or spaces.

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

       -i	   Ignore unresolved links.  Rdist will	normally try to	 main-
		   tain	 the link structure of files being transfered and warn
		   the user if all the links cannot be found.

       -m host	   Limit which machines	are to be updated. Multiple  -m	 argu-
		   ments  can  be  given  to  limit updates to a subset	of the
		   hosts listed	the distfile.

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

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

       -R	   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 truely identical	copies of directories.

       -v	   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.

       -w	   Whole mode. The whole file name is appended to the destina-
		   tion	directory name.	Normally, only the last	component of a
		   name	 is  used when renaming	files.	This will preserve the
		   directory structure of the files being  copied  instead  of
		   flattening the directory structure. For example, renaming a
		   list	 of  files  such  as ( dir1/f1 dir2/f2 ) to dir3 would
		   create  files  dir3/dir1/f1	and  dir3/dir2/f2  instead  of
		   dir3/f1 and dir3/f2.

       -y	   Younger mode. Files are normally updated if their mtime and
		   size	(see stat(2)) disagree.	The -y option causes rdist 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.

       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> `=' <name list>
	     [label:]<source list> `->'	<destination list> <command list>
	     [label:]<source list> `::'	<time_stamp file> <command list>

       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 and/or	directories on the lo-
       cal 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 for-
       mat) or the file	is newer than the time stamp file (third format).

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

       Newlines, tabs, and blanks are only used	as separators and  are	other-
       wise ignored. Comments begin with `#' and end with a newline.

       Variables  to be	expanded begin with `$'	followed by one	character or a
       name enclosed in	curly braces (see the examples at the end).

       The source and destination lists	have the following format:

	     <name>
       or
	     `(' <zero or more names separated by white-space> `)'

       The shell meta-characters `[', `]', `{',	`}', `*', and `?'  are	recog-
       nized  and expanded (on the local host only) in the same	way as csh(1).
       They can	be escaped with	a backslash.  The `~' character	 is  also  ex-
       panded  in the same way as csh(1) but is	expanded separately on the lo-
       cal and destination hosts.  When	the -w option is used with a file name
       that begins with	`~', everything	except the home	directory is  appended
       to the destination name.	 File names which do not begin with `/'	or `~'
       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>	     opt_dest_name `;'
	     `notify'	    <name list>	     `;'
	     `except'	    <name list>	     `;'
	     `except_pat'   <pattern list>   `;'
	     `special'	    <name list>	     string `;'

       The install command is used to copy out of date files  and/or  directo-
       ries.  Each source file is copied to each host in the destination list.
       Directories  are	 recursively copied in the same	way.  Opt_dest_name is
       an optional parameter 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 will be created
       if they do not exist on the remote host.	 To help prevent disasters,  a
       non-empty directory on a	target host will never be replaced with	a reg-
       ular  file  or  a symbolic link.	 However, under	the `-R' option	a non-
       empty directory will be removed if the corresponding filename  is  com-
       pletely	absent	on the master host.  The options are `-R', `-h', `-i',
       `-v', `-w', `-y', and `-b' and have the same semantics  as  options  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 occured) to	the listed names.  If no  `@'  appears
       in  the	name,  the  destination	 host  is  appended to the name	(e.g.,
       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  dou-
       bled  to	become part of the regular expression.	Variables are expanded
       in pattern list but not shell file pattern matching characters.	To in-
       clude a `$', it must be escaped with `\'.

       The special command is used to specify sh(1) 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 then the	shell commands will be
       executed	for every file	updated	 or  installed.	  The  shell  variable
       `FILE'  is set to the current filename before executing the commands in
       string.	String starts and ends with `"'	and can	cross  multiple	 lines
       in  distfile.   Multiple	 commands  to the shell	should be separated by
       `;'.  Commands are executed in the user's home directory	 on  the  host
       being  updated.	 The  special  command	can be used to rebuild private
       databases, etc.	after a	program	has been updated.

       The following is	a small	example:

	     HOSTS = ( matisse root@arpa )

	     FILES = ( /bin /lib /usr/bin /usr/games
	     /usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
	     /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 -R	;
	     except /usr/lib/${EXLIB} ;
	     except /usr/games/lib ;
	     special /usr/lib/sendmail "/usr/lib/sendmail -bz" ;

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

	     IMAGEN = (ips dviimp catdvi)

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

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

FILES
       distfile	    input command file
       /tmp/rdist*  temporary file for update lists

SEE ALSO
       sh(1), csh(1), stat(2)

HISTORY
       The rdist command appeared in 4.3BSD.

DIAGNOSTICS
       A complaint about mismatch of rdist version  numbers  may  really  stem
       from  some  problem with	starting your shell, e.g., you are in too many
       groups.

BUGS
       Source files must reside	on the local host where	rdist is executed.

       There is	no easy	way to have a special command executed after all files
       in a directory have been	updated.

       Variable	expansion only works for name lists; there should be a general
       macro facility.

       Rdist aborts on files which have	a negative mtime (before Jan 1,	1970).

       There should be a `force' option	to allow replacement of	non-empty  di-
       rectories by regular files or symlinks.	A means	of updating file modes
       and owners of otherwise identical files is also needed.

4.3 Berkeley Distribution	 July 27, 1991			      RDIST(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rdist&manpath=FreeBSD+1.0-RELEASE>

home | help