On Unison

Ever since I first got a laptop I’ve struggled with trying to keep some semblance of uniformity between it and my desktop. My first and most significant obstacle was with email. Email parallax was killing me and so I made the leap to IMAP, and I haven’t looked back since. Before I decided to use IMAP though, I kept looking for a tool that would synchronize between my two Outlook files; I had become so spoilt by PalmOS synchronization that this seemed like a common sense feature. Apparently not though.

Anyway the 60GB hard drive on the new laptop opened the possibility of having my entire music collection with me at all times on the laptop. I remember surfing by a new tool that worked on both Windows and *nix and was essentially a two-way rsync. A little Googling led me to the Unison File Synchronizer. Bing.

I grabbed the Windows executable and fired it up on my laptop, thinking I would be able to point to the network share with the music on it. I had already transferred a couple of genres over so this would be a nice way to get the ones I hadn’t. Also the idea of synchronization because I might clean up a bunch of ID3 tags on my desktop or rip a new CD on my laptop when I’m out; my former (copy and paste) method of synchronizing these changes was messy and often missed things. Anyway it brought up a dialog that let me choose the directory on my local drive I wanted to synchronize, but it looked like before I choose a remote drive I had to start the Unison server on that computer. What followed was a long and complicated episode to boring and detailed to go into here, so if you just want Unison to work, here’s what I had to do.

  • Put the executable in the directory you want to sync. Yes, I know there is a path argument, it never worked right for me. So for me I have Unison.exe in d:\Music on my laptop and i:\Music on the desktop.
  • Start the server from the command line, I used: unison.win32-gtkui.exe -socket 1234.
  • Start up the client. I created a new profile using “socket” as the connection method, the local IP of the machine as the host ( and left the rest blank.
  • Run it, and hope for the best.

I should tell you that it never successfully synced my Jazz directory, which is about 17GB. It would get further and further along, and then crash. I should warn you that it’s very resource intensive as well. In the beginning it’s tough on the server machine, and later it’s very hard on the client. Both times before it crashed on my Jazz directory it was using about 400MB of memory and slowed the computer down to a crawl. I was able to work around the crash because it had actually already transferred most of the files over to the laptop, it just had them in a strangely named dot directory, so I simply moved all the files out of that, deleted the now-empty temporary directory, and ran it again. This time it tried to do a lot less at one time, and syncronized the remaining files and few file properties as well. I think it’s a testament to the quality of the program that its crash was relatively easy to recover from.

Since the initial bumpy setup, it’s been working well for me. I tested it out by updating some things on the desktop and the laptop, and it caught all the changes just fine. When it’s not sure what to do it just asks you and you can tell it how various conflicts can be resolved. I’m happy with this tool, but I’d be quite hesitant to recommend it to somebody without much computer experience. The documentation is relatively poor, and the interface and behaviour of the application are anything but intuitive. Now when I run it to catch up on minor changes it is CPU intensive for a little while, but nothing compared to the earlier runs. All in all, I think this is a nifty tool, but it isn’t quite at a level of development where I would recommend it to the masses.

5 thoughts on “On Unison

  1. If you made it this far without falling asleep, you get a gold star. Sometimes I wonder if anyone reads these obscure posts.

  2. Well, as a representative of the masses, I must say that I read this entry (after reading your note)… and didn’t understand half of it. But I did read it. 🙂

  3. I’m in the same boat as you, although I haven’t spent any time looking for a synchronization method. Judging from the difficulty of it I’ll keep up my current strategy: re-rip any cds that I don’t have on my laptop.

  4. Well I guess overall it wasn’t that bad, so I’d recommend trying Unison out. The instructions above should help you avoid some of the problems I had, and it’s a heck of a lot better than my old method.

  5. He is on the mark. I am a little beyond “masses”. Unison will only “close” when it enocunters trouble, forcing you to retype commands and restart, and re browse on a non-intuitive browser. after many attempts with slight formatting changes it always gives you one option “quit”.

    but when you get it to work, it is good, because it senses changes on each end and always asks what to do. it needs to be fixed up though.

    I never figured out how to get it to work with SSH, so I use in internal only. it would be nice if i could run it on my server and connect securely. I need a bit-head pro to come over and show me how.