WSYNC: Windows SYNC
-------------------
Some of you may have used my DOS 'SYNC' utility (see below). I personally used
it a LOT to maintain daily current backups and I have missed it under Win64.
This version runs under Windows and works with long file names.

WSYNC 'synchronizes' a copy of a directory tree to contain any updated or
otherwise changed files. Only new/changed files are copied, which can make
updating a copy of a large tree a LOT faster. This makes a BIG difference if
all you want to do is update your backups with the days/weeks changes over a
large tree.

use: WSYNC -?
for details on the command syntax.

A few explainations:

 -D         - Causes WSYNC to automatically create directories which exist in
              the source but not in the destination. Otherwise you will be
              prompted for each directory to be created.
        NOTE: You will always be prompted if the root destination specified
              to the WSYNC command does not exist.
 -F         - Causes WSYNC to atomatically copy new/changed files from the
              source to the destination. Otherwise you will be prompter for
              each file. Note, you can reply 'A'll to the prompt which will
              cause WSYNC to auto-copy any remaining new/changed files in the
              subdirecotory it is working on.
 -O         - Causes WSYNC to display the output of the COPY commands is
              uses to copy the files. (See NOTE)
 -Cn(k)     - Sets the memory cache size allocated by WSYNC at startup.
              WSYNC needs to track directory lists and files within the active
              directory, and may exhaust it's cache on very large trees.
              By default 1024(k) or 1 megabyte is allocated for the cache.
 -Tn        - Set how many seconds older a file must be to trigger a copy.
              Default is 5 seconds (see NOTE).
 -R         - Perform a dryRun. Go through the motions, but don't actually
              copy files or create directories.
 -L[+]file  - Logs differences between the source and destination to the named
              text file.  Useful with -DFR to get a list of what has changed.
              (+ means append to the file, get one log from mltiple WSYNC)

WSYNC does/will NOT make changes to the source directory tree. It is all about
making backups, NOT about changing your source tree. I assume that you will
maintain the source tree as your wish it to be. WSYNC will warn you if files
in your backup no longer appear in the source, but it WILL NOT delete them
from the source.

WSYNC also does/will NOT copy files from the source over top of files in the
destination which have a newer timestamp.  You will be warned!

NOTE: These tools were built with the LCCWIN32 toolset, which is one of the
 best ways I've found so far to create simple/smallish Windows programs.

 A copied file should keep the "write time" of the source. Otherwise you have
 no way to determine which of two files has the most recently written data. I
 have not found a straightforward way to set the timestamps of "just written"
 files with LCC - anything that looks like it might accomplish this is part of
 the "Windows API" interface which would make WSYNC *MUCH* bigger and more
 complex!  My DOS 'SYNC' did this via a simple DOS call.

 The work-around I have come up with is to shell to the Windows 'COPY' command
 in order to copy the files. COPY does set the timestamp, but I find at least
 on my system the copies have "not quite" the same timestamp. Often it shows
 the file more recent than the original by 1-3 seconds. I have tested this on
 fast RAMdrives with "copy" taking much less than a single second, yet I still
 see timestamps that differ by several seconds.  This is the primary reason for
 the '-T' option - it allows you to set just how many seconds "older" a file
 must be to trigger a copy.

 I think this is an actual bug in Windows. A file copied by the OS will be
 exactly the same as the original, and should not show a different write time
 - Windows obviously tries to do this, but doesn't quite get it right!
