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

FreeBSD Manual Pages

  
 
  

home | help
sitecopy(1)			 User Manuals			   sitecopy(1)

NAME
       sitecopy	- maintain remote copies of web	sites

SYNOPSIS
       sitecopy	[options] [operation mode] sitename ...

DESCRIPTION
       sitecopy	is for copying locally stored web sites	to remote web servers.
       A single	command	will upload files to the server	which have changed lo-
       cally,  and  delete  files  from	the server which have been removed lo-
       cally, to keep the remote site synchronized with	the local  site.   The
       aim  is to remove the hassle of uploading and deleting individual files
       using an	FTP client.  sitecopy will also	optionally try to  spot	 files
       you move	locally, and move them remotely.

       FTP,  WebDAV  and  other	 HTTP-based  authoring	servers	(for instance,
       AOLserver and Netscape Enterprise) are supported.

GETTING	STARTED
       This section covers how to start	maintaining a web site using sitecopy.
       After introducing the basics, two situations are	covered: first,	 where
       you  have  already  upload the site to the remote server; second, where
       you haven't.  Lastly, normal site maintenance activities	are explained.

   Introducing the Basics
       If you have not already done so,	you need to create  an	rcfile,	 which
       will store information about the	sites you wish to administer. You also
       need  to	 create	a storage directory, which sitecopy uses to record the
       state of	the files on each of the remote	sites. The rcfile and  storage
       directory  must	both be	accessible only	by you - sitecopy will not run
       otherwise.  To create the storage directory with	 the  correct  permis-
       sions, use the command
	    mkdir -m 700 .sitecopy
       from your home directory. To create the rcfile, use the commands
	    touch .sitecopyrc
	    chmod 600 .sitecopyrc
       from  your  home	directory. Once	this is	done, edit the rcfile to enter
       your site details as shown in the CONFIGURATION section.

   Existing Remote Site
       If you have already uploaded the	site to	the remote server, ensure your
       local files are synchronized with the remote files. Then, run
	    sitecopy --catchup sitename
       where sitename is the name of the site you used after the site  keyword
       in the rcfile.

       If  you	do  not	have a local copy of the remote	site, then you can use
       fetch mode to discover what is on the remote site, and synchronize mode
       to download it. Fetch mode works	well for  WebDAV  servers,  and	 might
       work if you're lucky for	FTP servers. Run
	    sitecopy --fetch sitename
       to fetch	the site - if this succeeds, then run
	    sitecopy --synch sitename
       to  download  a local copy.  Do NOT do this if you already have a local
       copy of your site.

   New Remote Site
       Ensure that the root directory of the site  has	been  created  on  the
       server by the server administrator. Run
	    sitecopy --init sitename
       where  sitename is the name of the site you used	after the site keyword
       in the rcfile.

   Site	Maintenance
       After setting up	the site as given in one of the	 two  above  sections,
       you  can	 now  start  editing your local	files as normal. When you have
       finished	a set of changes, and you want to update the  remote  copy  of
       the site, run:
	    sitecopy --update sitename
       and all the changed files will be uploaded to the server. Any files you
       delete locally will be deleted remotely too, unless the nodelete	option
       is  specified in	the rcfile. If you move	any files between directories,
       the remote files	will be	deleted	from the server	 then  uploaded	 again
       unless you specify the checkmoved option	in the rcfile.

       At any time, if you wish	to see what changes you	have made to the local
       site since the last update, you can run
	    sitecopy sitename
       which will display the list of differences.

   Synchronization Problems
       In  some	 circumstances,	the actual files which make up the remote site
       will be different from what sitecopy thinks is on the remote site. This
       can happen, for instance, if the	connection to  the  server  is	broken
       during an update. When this situation arises, Fetch Mode	should be used
       to fetch	the list of files making up the	site from the remote server.

INVOCATION
       In  normal  operation, specify a	single operation mode, followed	by any
       options you choose, then	one or more site names.	For instance,
	    sitecopy --update --quiet mainsite anothersite
       will quietly update the sites named 'mainsite' and 'anothersite'.

OPERATION MODES
       -l, --list
	      List Mode	- produces a listing of	all  the  differences  between
	      the local	files and the remote copy for the specified sites.

       -ll, --flatlist
	      Flat  list  Mode - like list mode, except	the output produced is
	      suitable for parsing by an external script or  program.  An  AWK
	      script,  changes.awk.   is  provided which produces an HTML page
	      from this	mode.

       -u, --update
	      Update Mode - updates the	remote copy of the specified sites.

       -f, --fetch
	      Fetch Mode - fetches the list of files from the  remote  server.
	      Note that	this mode has only limited support in FTP - the	server
	      must accept the MDTM command, and	use a Unix-style 'ls' for LIST
	      implementation.

       -s, --synchronize
	      Synchronize  Mode	- updates the local site from the remote copy.
	      WARNING: This mode overwrites local files. Use with care.

       -i, --initialize
	      Initialization Mode - initializes	the sites specified  -	making
	      sitecopy think there are NO files	on the remote server.

       -c, --catchup
	      Catchup  Mode  -	makes sitecopy think the local site is exactly
	      the same as the remote copy.

       -v, --view
	      View Mode	- displays all the site	definitions from the rcfile.

       -h, --help
	      Display help information.

       -V, --version
	      Display version information.

OPTIONS
       -y, --prompting
	      Applicable in Update Mode	only, will prompt the user for confir-
	      mation for each update (i.e., creating a directory, uploading  a
	      file etc.).

       -r RCFILE, --rcfile=RCFILE
	      Specify an alternate run control file location.

       -p PATH,	--storepath=PATH
	      Specify an alternate location to use for the remote site storage
	      directory.

       -q, --quiet
	      Quiet  output  -	display	the filename only for each update per-
	      formed.

       -qq, --silent
	      Very quiet output	- display nothing for each update performed.

       -o, --show-progress
	      Applicable in Update Mode	only, displays the progress  (percent-
	      age complete) of data transfer.

       -k, --keep-going
	      Keep going past errors in	Update Mode or Synch Mode

       -a, --allsites
	      Perform  the  given  operation on	all sites - applicable for all
	      modes except View	Mode, for which	it has no effect.

       -d MASK,	--debug=KEY[,KEY...]
	      Turns on debugging.  A list of comma-separated  keywords	should
	      be given.	Each keyword may be one	of:
		socket	  Socket handling
		files	  File handling
		rcfile	  rcfile parser
		http	  HTTP driver
		httpbody  Display response bodies in HTTP
		ftp	  FTP driver
		xml	  XML parsing information
		xmlparse  Low-level XML	parsing	information
		httpauth  HTTP authentication information
		cleartext Display passwords in plain text

	      Passwords	will be	obscured in the	debug output unless the	clear-
	      text  keyword  is	 used. An example use of debugging is to debug
	      FTP fetch	mode:

		   sitecopy --debug=ftp,socket --fetch sitename

CONCEPTS
       The stored state	of a site is the snapshot of the  state	 of  the  site
       saved  into  the	 storage directory (~/.sitecopy/). The storage file is
       used to record this state between invocations. In update	mode, sitecopy
       builds up a files list for each site by scanning	the  local  directory,
       reading	in the stored state, and comparing the two - determining which
       files have changed, which have moved, and so on.

CONFIGURATION
       Configuration is	performed via the run  control	file  (rcfile).	  This
       file  contains a	set of site definitions.  A unique name	is assigned to
       every site definition, which is used on the command line	 to  refer  to
       the site.

       Each  site  definition  contains	 the details of	the server the site is
       stored on, how the site may be accessed at that server, where the  site
       is held locally and remotely, and any other options for the site.

   Site	Definition
       A site definition is made up of a series	of lines:

       site sitename
	  server server-name
	  remote remote-root-directory
	  local	local-root-directory
	[ port port-number ]
	[ username username ]
	[ password password ]
	[ proxy-server proxy-name
	  proxy-port port-number ]
	[ url siteURL ]
	[ protocol { ftp | webdav } ]
	[ ftp nopasv ]
	[ ftp showquit ]
	[ ftp {	usecwd | nousecwd } ]
	[ http expect ]
	[ http secure ]
	[ safe ]
	[ state	{ checksum | timesize }	]
	[ permissions {	ignore | exec |	all | dir } ]
	[ symlinks { ignore | follow | maintain	} ]
	[ nodelete ]
	[ nooverwrite ]
	[ checkmoved [renames] ]
	[ tempupload ]
	[ exclude pattern ]...
	[ ignore pattern ]...
	[ ascii	pattern	]...

       Anything	 after	a  hash	(#) in a line is ignored as a comment.	Values
       may be quoted and characters may	be backslash-escaped.  For example, to
       use the exclude pattern *#, use the following line:
	    exclude "*#"

   Remote Server Options
       The server key is used to specify the remote server the site is	stored
       on.   This may be either	a DNS name or IP address. A connection is made
       to the default port for the protocol used, or that given	 by  the  port
       key.   sitecopy supports	the WebDAV or FTP protocols - the protocol key
       specifies which to use, taking the value	of either webdav  or  ftp  re-
       spectively. By default, FTP will	be used.

       The  proxy-server  and  proxy-port  keys	may be used to specify a proxy
       server to use. Proxy servers are	currently only supported for WebDAV.

       If the FTP server does not support passive (PASV) mode,	then  the  key
       ftp  nopasv  should  be	used.	To display the message returned	by the
       server on closing the connection, use the ftp showquit option.  If  the
       server  only supports uploading files in	the current working directory,
       use the key ftp usecwd (possible	 symptom:  "overwrite  permission  de-
       nied").	Note that the remote-directory (keyword	remote)	must be	an ab-
       solute path (starting with '/'),	or usecwd will be ignored.

       If  the	WebDAV server correctly	supports the 100-continue expectation,
       e.g. Apache 1.3.9 and later, the	key http expect	should be used.	 Doing
       so can save some	bandwidth and time in an update.

       If  the	WebDAV server supports access via SSL, the key http secure can
       be used.	 Doing so will cause the transfers between  sitecopy  and  the
       host  to	 be performed using an secure, encrypted link.	The first time
       SSL is used to access the server, the user will be prompted  to	verify
       the SSL certificate, if it's not	signed by a CA trusted in the system's
       CA root bundle.

       To  authenticate	 the  user  with the server, the username and password
       keys are	used. If it exists, the	~/.netrc will be searched for a	 pass-
       word if one is not specified. See ftp(1)	for the	syntax of this file.

       Basic and digest	authentication are supported for WebDAV. Note that ba-
       sic  authentication  must not be	used unless the	connection is known to
       be secure.

       The full	URL that is used to access the site can	optionally  be	speci-
       fied  in	 the url key. This is used only	in flat	list mode, so the site
       URL can be inserted in 'Recent Changes' pages. The URL must not have  a
       trailing	slash; a valid example is
	    url	http://www.site.com/mysite

       If the tempupload option	is given, new or changed files are upload with
       a  ".in."  prefix,  then	 moved to the true filename when the upload is
       complete.

   File	State
       File state is stored in the storage files (~/.sitecopy/*), and is  used
       to  discover  when a file has been changed.  Two	methods	are supported,
       and can be selected using the  state  option,  with  either  parameter:
       timesize	(the default), and checksum.

       timesize	 uses  the last-modification date and the size of files	to de-
       tect when they have changed.  checksum uses an MD5 checksum  to	detect
       any changes to the file contents.

       Note  that MD5 checksumming involves reading in the entire file,	and is
       slower than simply using	the last-modification date and size. It	may be
       useful for instance if a	versioning system is in	use which updates  the
       last-modification  date	on  a  'checkout',  but	 this doesn't actually
       change the file contents.

   Safe	Mode
       Safe Mode is enabled by using the safe key. When	enabled, each  time  a
       file is uploaded	to the server, the modification	time of	the file as on
       the  server  is	recorded.  Subsequently,  whenever  this file has been
       changed locally and is to be uploaded again, the	 current  modification
       time  of	 the  file  on	the server is retrieved, and compared with the
       stored value. If	these differ, then the remote copy  of	the  file  has
       been altered by a foreign party.	 A warning message is issued, and your
       local  copy of the file will not	be uploaded over it, to	prevent	losing
       any changes.

       Safe Mode can be	used with FTP or WebDAV	servers, but if	Apache/mod_dav
       is used,	mod_dav	0.9.11 or later	is required.

       Note Safe mode cannot be	used in	conjunction with the  nooverwrite  op-
       tion (see below).

   File	Storage	Locations
       The  remote  key	specifies the root directory of	the remote copy	of the
       site.  It may be	in the form of an absolute pathname, e.g.
	    remote /www/mysite/
       For FTP,	the directory may also be specified relative to	the login  di-
       rectory,	in which case it must be prefixed by "~/", for example:
	    remote ~/public_html/

       The  local  key specifies the directory in which	the site is stored lo-
       cally.  This may	be given relative to your home directory (as given  by
       the environment variable	$HOME),	again using the	"~/" prefix.
	    local ~/html/foosite/
	    local /home/fred/html/foosite/
       are equivalent, if $HOME	is set to "/home/fred".

       For  both  the local and	remote keywords, a trailing slash may be used,
       but is not required.

   File	Permissions Handling
       File permissions	handling is dictated by	the permissions	key, which may
       be given	one of three values:

       ignore to ignore	file permissions completely (the default),

       exec   to mirror	the permissions	of executable files only,

       all    to mirror	the permissions	of all files.

       This can	be used, for instance, to ensure the permissions of CGI	 files
       are  set.  The  option is currently ignored for WebDAV servers. For FTP
       servers,	a chmod	is performed remotely to set the permissions.

       To handle directory permissions,	the key:
	  permissions dir
       may be used in addition to a permissions	key of either exec,  local  or
       all.  Note that permissions all does not	imply permissions dir.

   Symbolic Link Handling
       Symlinks	 found	in  the	local site can be either ignored, followed, or
       maintained. In 'follow' mode, the files references by the symlinks will
       be uploaded in their place. In 'maintain' mode, the link	will  be  cre-
       ated  remotely  as  well, see below for more information. The mode used
       for each	site is	specified with the symlinks rcfile key,	which may take
       the value of ignore, follow or maintain to select the mode as appropri-
       ate.

       The default mode	is follow, i.e.	symbolic links found in	the local site
       are followed.

   Symbolic link Maintain Mode
       This mode is currently only supported by	the WebDAV  driver,  and  will
       work  only  with	 servers  which	implement WebDAV Advanced Collections,
       which is	a work-in-progress. The	target of the link on  the  server  is
       literally  copied  from	the  target  of	the symlink. Hint: you can use
       URL's if	you like:
	    ln -s "http://www.somewhere.org/" somewherehome

       In this way, a "302 Redirect" can be easily set	up  from  the  client,
       without having to alter the server configuration.

   Deleting and	Moving Remote Files
       The nodelete option may be used to prevent remote files from ever being
       deleted.	 This  may  be useful if you keep large	amounts	of data	on the
       remote server which you do not need to store locally as well.

       If your server does not allow you to upload changed files over existing
       files, then you can use the nooverwrite option. When this is used,  be-
       fore uploading a	changed	file, the remote file will be deleted.

       If  the	checkmoved  option  is	used, sitecopy will look for any files
       which have been moved locally. If any are found,	when the  remote  site
       is updated, the files will be moved remotely.

       If  the	checkmoved  renames option is used, sitecopy will look for any
       files which have	been moved or renamed locally. This option may only be
       used in conjunction with	the state checksum option.

       WARNING

       If you are not using MD5	checksumming (i.e. the state checksum  option)
       to  determine  file state, do NOT use the checkmoved option if you tend
       to hold files in	different directories with identical sizes,  modifica-
       tion times and names and	ever move them about. This seems unlikely, but
       don't say you haven't been warned.

   Excluding Files
       Files  may  be  excluded	from the files list by use of the exclude key,
       which accepts shell-style globbing patterns. For	example, use
	    exclude *.bak
	    exclude *~
	    exclude "#*#"
       to exclude all files which have a .bak extension, end in	 a  tilde  (~)
       character,  or which begin and end with a a hash. Don't forget to quote
       or escape the value if it includes a hash!

       To exclude certain files	within an particular directory,	simply	prefix
       the  pattern  with  the directory name -	including a leading slash. For
       instance:
	    exclude /docs/*.m4
	    exclude /files/*.gz
       which will exclude all files with the .m4 extension in the 'docs'  sub-
       directory  of  the  site,  and  all files with the .gz extension	in the
       files subdirectory.

       An entire directory can also be excluded	-  simply  use	the  directory
       name with no trailing slash. For	example
	    exclude /foo/bar
	    exclude /where/else
       to exclude the 'foo/bar'	and 'where/else' subdirectories	of the site.

       Exclude	patterns  are consulted	when scanning the local	directory, and
       when scanning the remote	site during a --fetch.	Any file which matches
       any exclude pattern is not added	to the files list.  This means that  a
       file  which  has	 already  been	uploaded by sitecopy, and subsequently
       matches an exclude pattern will be deleted from the server.

   Ignoring Local Changes to Files
       The ignore option is used to instruct  sitecopy	to  ignore  any	 local
       changes	made  to a file. If a change is	made to	the contents of	an ig-
       nored file, this	file will not be  uploaded  by	update	mode.  Ignored
       files will be created, moved and	deleted	as normal.

       The ignore option is used in the	same way as the	exclude	option.

       Note  that  synchronize	mode  will  overwrite  changes made to ignored
       files.

   FTP Transfer	Mode
       To specify the FTP transfer mode	for files,  use	 the  ascii  key.  Any
       files  which  are transferred using ASCII mode have CRLF/LF translation
       performed appropriately.	For example, use
	    ascii *.pl
       to upload all files with	the .pl	extension as ASCII text.  This key has
       no effect with WebDAV (currently).

RETURN VALUES
       Return values are specified for different operation modes. If  multiple
       sites are specified on the command line,	the return value is in respect
       to the last site	given.

   Update Mode
	-1 ... update never even started - configuration problem
	 0 ... update was entirely successful.
	 1 ... update went wrong somewhere
	 2 ... could not connect or login to server

   List	Mode (default mode of operation)
	-1 ... could not form list - configuration problem
	 0 ... the remote site does not	need updating
	 1 ... the remote site needs updating

EXAMPLE	RCFILE CONTENTS
   FTP Server, Simple Usage
       Fred's  site  is	uploaded to the	FTP server 'my.server.com' and held in
       the directory 'public_html', which is in	the login directory. The  site
       is stored locally in the	directory /home/fred/html.

       site mysite
	 server	my.server.com
	 url http://www.server.com/fred
	 username fred
	 password juniper
	 local /home/fred/html/
	 remote	~/public_html/

   FTP Server, Complex Usage
       Here,  Freda's  site is uploaded	to the FTP server 'ftp.elsewhere.com',
       where it	is held	in the directory /www/freda/. The local	site is	stored
       in /home/freda/sites/elsewhere/

       site anothersite
	 server	ftp.elsewhere.com
	 username freda
	 password blahblahblah
	 local /home/freda/sites/elsewhere/
	 remote	/www/freda/
	 # Freda wants files with a .bak extension or a
	 # trailing ~ to be ignored:
	 exclude *.bak
	 exclude *~

   WebDAV Server, Simple Usage
       This example shows use of a WebDAV server.

       site supersite
	 server	dav.wow.com
	 protocol webdav
	 username pow
	 password zap
	 local /home/joe/www/super/
	 remote	/

FILES
       ~/.sitecopyrc Default run control file location.
       ~/.sitecopy/ Remote site	information storage directory
       ~/.netrc	Remote server accounts information

BUGS
       Known problems: Fetch + synch modes are NOT reliable for	FTP.   If  you
       need reliable operation of fetch	or synch modes,	you shouldn't be using
       sitecopy.  Try rsync instead.

       Please  send  bug  reports  and feature requests	to <sitecopy@lyra.org>
       rather than to the author, since	the mailing list is archived  and  can
       be a useful resource for	others.

SEE ALSO
       rsync(1), ftp(1), mirror(1)

STANDARDS
       [Listed	for reference only, no claim of	compliance to any of the below
       standards is made.]

       RFC 959 - File Transfer Protocol	(FTP)
       RFC 1521	- Multipurpose Internet	Mail Extensions	Part One
       RFC 1945	- Hypertext Transfer Protocol -- HTTP/1.0
       RFC 2396	- Uniform Resource Identifiers:	Generic	Syntax
       RFC 2518	- HTTP Extensions for Distributed Authoring -- WEBDAV
       RFC 2616	- Hypertext Transfer Protocol -- HTTP/1.1
       RFC 2617	- HTTP Authentication
       REC-XML - Extensible Markup Language (XML) 1.0
       REC-XML-NAMES - Namespaces in XML

DRAFT STANDARDS
       draft-ietf-ftpext-mlst-05.txt - Extensions to FTP
       draft-ietf-webdav-collections-protocol-03.txt - WebDAV Advanced Collec-
       tions Protocol

AUTHOR
       Joe Orton and others.
       e-mail: sitecopy@lyra.org
       www: http://www.lyra.org/sitecopy/

sitecopy			   June	2001			   sitecopy(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sitecopy&sektion=1&manpath=FreeBSD+Ports+15.0.quarterly>

home | help