Unison File Synchronizer
Unison project website.
Unison Manual.
Unison Mac OS X FAQs.
Set Up
Downloaded GUI Universal Binary 2.32.12 "(2009.05.06, stable, should work on Tiger and Leopard)."
1. Installed on both Principia (King office) and houptlab.org (magnet.neuro.fsu.edu) by screen sharing...
2. Logged into Magnet as User, and launched Unison on Magnet.
3. On Magnet, under System Preferences, set Unison to run automatically on start-up on houpt log-in. (Will it be running even if I don't log in to magnet as user?)
4. On Principia, In the finder, made a new folder in home directory "/Users/houpt/uniDisk"
5. Ran Unison on Principia; created a new profile:
Profile name: "uniDisk" First Root:File: "/Users/houpt/uniDisk" Second Root:Remote Second Root:User:"houpt" Second Root:Host:"houptlab.org" Second Root:File:"uniDisk"
Save the profile.
(Apparently don't need to setup a profile on the server.)
(Profiles are stored as .prf files in "/Library/Application Support/Unison" folder; apparently only way to delete a profile is to trash the .prf file manually.)
6. To sync, run Unison, choose uniDisk profile, hit "Open". First time of launch will be prompted for password.
7. Hit "Go" for default synchronization.
And it just worked! (apparently don't need to create a profile on the remote host. Folder will be created on the server side on the first sync.)
If you close the profile window, you can't reopen the window except by quiting and relaunching Unison? Hit "restart" button to get back to list of profiles. Apparently no way to edit the profiles after creation.
Command Line
To synchronize the folder "/Users/houpt/uniDisk" from the command line (without invoking GUI app):
1. Make sure you are starting from directory "/Users/houpt" (maybe should use absolute paths in command line?))
2. type following command:
unison uniDisk ssh://houptlab.org/uniDisk -ui text -batch -times
3. prompted for password
4. If there are any conflicts etc., will be prompted for directions. These can be suppressed with various command line options, for example:
-auto
the user interface will not ask to confirm non-conflicts, but only ask questions about conflicts
-batch
the user interface will ask no questions at all; non-conlficts will be propogated, conflicts will be skipped
-silent
the textual interface will porint nothing at ell, except errors (automatically sets -batch TRUE)
-times
synchronize the modification times? -ignore 'Name .DS_Store" Unison will ignore all files with the name .DS_Store (On Mac OS X, .DS_Store files encode only trivial appearance stuff like icon position, but .DS_Store files are changed everytime a folder is opened so frequently generate irrelevant conflicts.)
AppleScript
To avoid opening the terminal window, create the following AppleScript and save as an application.
do shell script "unison /User/houpt/uniDisk ssh://houptlab.org/uniDisk -ui text -batch -times -ignore 'Name .DS_Store' "
Results of the synch will be silent, but will be stored in the "unison.log" file. If there are conflicts to be resolved, then the applescript will post a dialog window.
Conflicts
Conflicts arise when the server and the local directory have conflicting dates (i.e. the versions on office computer and laptop were independently edited, so are now out of sync.) If there are conflicts to be resolved, then the applescript will post a dialog window.
unison /User/houpt/uniDisk ssh://houptlab.org/uniDisk -ui text -times -ignore 'Name .DS_Store'
For each conflict, < moves from server to local, > moves from local to server, / skips the file, f means follow Unison recommendation.