NAME

     synctree - synchronize directory trees.


SYNOPSIS

     synctree [-iuf] [[user1@]machine1:]dir1 [[user2@]machine2:]dir2


DESCRIPTION

     Synctree synchronizes the directory tree rooted at dir2 with
     dir1.  It  walks recursively through both trees, and deletes
     and adds files in dir2 to make it equal to dir1. Mode, owner
     and group are set for each file unless the -u flag is given.
     In its normal mode of operation, synctree will ask if it may
     delete  or  add directories assuming that you don't want to.
     Non-directories are simply deleted or  added,  but  synctree
     will  ask if it needs to update a normal file with a default
     answer of 'y'. Simply typing return will choose the  default
     answer,  typing  end-of-file  is  like typing return to this
     question and all other questions.

     You can specify a hostname and user-id to be used to  access
     dir1  or  dir2.   Synctree  will use rsh(1) to run a copy of
     itself on the remote machine.   The  call  interface  mimics
     that  of  rcp(1), but you can use more than one user@machine
     prefix if you want to make things really interesting.

     Hard links are enforced, an update is done by first deleting
     the  old  file  so  that  links to unknown files are broken.
     Links to files within dir2 will be restored.

     If either directory contains the  file  .backup,  then  this
     file  will be used as an alternate inode table.  This allows
     one to make a backup copy of a file  tree  full  of  special
     files  and  differing  user-ids on a remote machine under an
     unpriviledged user-id.


OPTIONS

     -i   Ask for permission (with default answer 'n') to  delete
          or add any file or directory.

     -u   Only install newer  files,  i.e.  merge  the  directory
          trees.

     -f   Don't ask, think 'yes' on any question.


SEE ALSO

     remsync(1), cpdir(1), rsh(1), rcp(1), perror(3).


DIAGNOSTICS

     Messages may come from three different processes.  One named
     "Slave" running in dir1, one named "Master" running in dir2,
     and synctree itself in a mediator role.  The  mediator  will
     also  perform  the task of either the master or the slave if
     one of them is running locally.  You need to  know  this  to
     interpret  the  error  messages  coming  from  one  of these
     processes.  The messages are normally  based  on  perror(3).
     Failure to contact a remote machine will be reported by rsh.
     Synctree should have a zero exit status if  no  errors  have
     been encountered.


BUGS

     Directory dir2 will be created without asking.

     The master and slave processes get their error output  mixed
     up sometimes (nice puzzle).

     The local and remote machine must use  the  same  file  type
     encoding.

     The link replacement strategy may lead to lack of space on a
     small device.  Let synctree run to completion and then rerun
     it to pick up the pieces.

     Letting the local process keep its "synctree" name may be  a
     mistake.

     It talks too much.


AUTHOR

     Kees J. Bot, (kjb@cs.vu.nl)