Update

NOTE: webupdate is deprecated and will go away shortly!

Webupdate

The webupdate command pushes the given file or directory tree in the inside web out to the outside web. Honors all .private files. Uses rsync and ssh.

Syntax

webupdate [-nvx] [path...]
-n  Do nothing. Runs rsync in dry-run mode - does not actually update anything, but reports which files would be updated.
-v  Verbose. The normal webupdate output shows only files updated. This option shows links and directories updated, and deletions, too. The format differs, as this turns on rsync's verbose option.
-x  Print the exclude file that would be given to rsync.
You must have owner or group permissions to the file or directory you are pushing, unless you are root or the special web owner uid. You needn't have permission to all files in a directory tree, only the top level directory.

Privacy

A mechanism exists to prevent parts of the web from being seen from outside the Computer Science Department. Files or directories in the web may be selectively removed from view by outsiders, and optionally replaced by alternative files or directories.

Any directory in the web may contain a file named .private . Files or directories named in this file, one per line, are not visible to the outside.

If two files or two directories are listed on a single line in the .private file, the second one replaces the first.

Symbolic links are preserved. If a link points to a file that is not in the web filesystem, it will be invalid on the outside web.

Lines beginning with a pound sign (#) are ignored.

Note that if a .private file exists, but is not world readable, the entire contents of the directory will be kept private (i.e. removed from the outside web and not updated).

Example 1

Here's a sample file:

# my .private file
cv.html cv.alt.html
blort.gif
mypubs

A curriculum vitae, in html format (cv.html), is visible to users in the CS Department only. Outsiders see an alternative file (cv.alt.html) in its place. The inside version references an image (blort.gif) and files in a subdirectory (mypubs) not used by the alternate version, so they are merely dropped - no replacements are necessary.

If the first file mentioned does not exist, but the alternate file does, the alternate file is copied to the outside web and given the name of the first file.

Example 2

Here's a trick for restricting access using the web server's access control features, but on the outside web only.

# .htaccess outside only
.htaccess htaccess_out

If there is no .htaccess file, then the web server behaves normally inside the firewall. But this .private file tells webupdate to put htaccess_out into the outside web, and rename it .htaccess, whereupon its contents will be read by the outside web server.

Bugs

Doesn't report the removal of files and directories except those excluded by a .private file. This is a feature of rsync.