Note: I plan to edit this post and keep it current with the solution that is working for me
I've achieved partial success using Hamachi (connectivity), SSH (more connectivity), Unison (the heavy lifting of synchronization), and Cygwin to make my life tremendously easier.
A small task-list of what I did (subject to further editing as I refine the process):
Ubuntu 7.10 "Server" (an old piece of crap AMD 1.3 with ~160GB of hard drive space)
1. Download and install Hamachi
Install and configure to start at boot without the user logging in
Create a Hamachi Network with a strong password
2. Install Unison package (v2.13.x at this time)
3. Create a user that will connect via ssh and sync
Windows XP Professional "Clients"
1. Download and install Hamachi
Install with defaults, change nickname to something more descriptive
Join network created in Server step 1 above using strong password
Configure Hamachi to start at login
2. Install Cygwin with OpenSSH, OpenSSL, Unison, and nano
Add C:\cygwin and C:\cygwin\bin to PATH variable for all users
(I did this so that I can run Unison from the Windows CLI thus allowing me to run it as a scheduled task)
3. Configure SSH to use RSA key
(On the "client" in Cygwin shell)
Code:
ssh-keygen -t rsa
cat ~/.ssh/id_dsa.pub | ssh <hamachi IP of "server"> 'cat - >>~/.ssh/authorized_keys'
Now test to make sure it works:
Code:
ssh <username>@<Hamachi IP of server>
It should log you in without a password now.
4. Configure Unison profile on XP client using nano
Code:
unison
nano ~/.unison/<your profile name here>.prf
Here is my profile that I used:
Code:
root = C:\Documents and Settings\<username>\My Documents
root = ssh://<Hamachi IP of Server>//home/<username>/mydocs
ignore = Name Thumbs.db
ignore = Name *~
ignore = Name {desktop.ini}
ignore = Name *.tmp
ignore = Path .unison
ignore = Path {My Music/Sample Music.lnk}
ignore = Path {My Pictures/Sample Pictures.lnk}
auto=true
fastcheck=true
ignorecase=false
retry=3
rshargs=-C
sortnewfirst=true
times=true
#EOF
5. Set up a Scheduled Task on the XP Clients
Start > Programs > Accessories > System Tools > Scheduled Tasks
-Add Scheduled Task
...browse to C:\cygwin\bin\unison-2.13.exe
-Select your schedule, enter your user credentials
-Edit the Advanced Properties of the task you just created:
-Run: C:\cygwin\bin\unison-2.13.exe <your profile name>
-Windows will now make you re-enter your credentials.
6. Create an icon on the user's desktop so they can manually sync
-In Windows XP...
Right click the user's desktop and choose New > Shortcut
-Choose C:\cygwin\bin\unison-2.13.exe
-Give it a fancy name for the user's sake
-Right click your newly created shortcut, choose Properties
-Add <your profile name> on to the end of the target line
Conclusions (in testing)
-Everything seems to be working as planned at the moment... but, with that being said, it is still really early in this project so I haven't had a chance to see if it will work reliably and without data loss. I've backed up to another location in preparation for any sort of disaster that may occur due to shortsightedness or my general unfamiliarity with any of the above.
To Do
-Need to test to see what happens when one of the clients is left powered up (without any documents open) and changes are made on one of the other clients. Will it cause problems when the scheduled task runs? Do I need to offset schedules so they don't collide?
Links
I plan to post the links to the resources I've used on this project here.
Here's a site that I just stumbled upon that pretty much sums up the whole project (except the author uses rsync rather than Unison):
http://justinsomnia.org/2007/02/how-...u-using-rsync/
Notes
-The Windows path to the .unison directory is C:\cygwin\home\<username>\.unison
-- this is where your profile (*.prf) files should reside
-I know that Hamachi isn't needed because SSH will look after encrypting the connection. I choose to use Hamachi because I can remotely administer the XP client as well. If you don't need this capability then omit the Hamachi steps in favor of good ol' SSH connecting directly to your server.