My workflow is based on using OS X and Fedora together. I’m using OS X for business work and Fedora for actual work. This post is about a way which I use to keep my files in sync, post about my workflow might come later.
I tested a few solutions like rsync and manual copying (really, this was bad idea :) ). I’m not able to keep my files in sync manually thus i need to automate. To automate is good idea even if you are capable to keep files in sync – automation makes (at least me) things go smooth.
So I decided to go Unison way. Unison is beautiful piece of software written by Benjamin C. Pierce in pretty cool programming language – OCaml.
I have few machines always on on Internet so I can use start topology which has few advantages over direct synchronisation. One of the greatest (for me) is that central server for Unison is available over SSH (password-less login) and central server is in my office where I’m rarely but when I’m in office i always want some of my files which is few hundred kilometres from me.
So let’s assume we have two machines (clients) and one server. One machine is called NTB-1, second is DESKTOP-1 and server is called SERVER-1.
In this part I should mention that Unison is extremely sensitive to own version. You must have available exact same version on every synchronised machine (at least i would not try doing job without it). Fedora 18 has Unison 2.4 default version, you can get this version to OS X using homebrew. Server is running Centos 6.3 where Unison 2.4 is also by default (provided by unison package). I’m lucky bastard – this was pain free for me.
Let’s setup first client – NTB-1 running OS X. First we should install Unison:
[code]brew install unison [/code]
Then I created folder for Unison config:
[code]mkdir ~/.unison[/code]
Next step is to create configuration file, mine (pretty basic) is looking like this:
[code]
# Sync roots
root = /Users/jozef
root = ssh://jozef@vserver-1//home/jozef/TrustedPoint
# What to synchronize
path = Current
path = Documents
path = .ssh
path = .bashrc
path = .vimrc
# What to ignore
ignore = Name *~
ignore = Name .DS_Store
ignore = Name .tmp
ignore = Path .ssh/known_hosts
# Keep backup copy of every file
backuplocation = central
backup = Name *
backupprefix = $VERSION.
backupsuffix =
# Log actions
logfile = /Users/jozef/.unison/sync.log
[/code]
On Fedora box i created config directory:
[code]mkdir ~/.unison[/code]
On Fedora box config file look like this:
[code]
# Sync roots
root = /home/jozef
root = ssh://jozef@server-1//home/jozef/TrustedPoint
# What to synchronize
path = Current
path = Documents
path = .ssh
path = .bashrc
path = .vimrc
# What to ignore
ignore = Name *~
ignore = Name *.swp
ignore = Name .tmp
ignore = Path .ssh/known_hosts
# Keep backup copy of every file
backuplocation = central
backup = Name *
backupprefix = $VERSION.
backupsuffix =
# Log actions
logfile = /home/jozef/.unison/sync.log
[/code]
You should adjust at least sync roots and what to synchronize. I would not describing each option as you can find it here.
I would like to especially mention two / after server address and backuplocation option. They are pretty important for me, you might look to manual why. :)
Server setup is pretty easy – just create paths and install Unison:
[code]
mkdir ~/TrustedPoint
yum install unison
[/code]
If you want password-less login you should setup SSH which is beyond scope of this quick how-to. Happy synchronizing and no conflicts.
2 comments
[…] Having two machines for work has a lot of advantages but there are few disadvantages. I have covered file synchronisation issue in my previous post. […]
[…] talked about Unison before – check it here. It is very cool tool, and if you are user of some sort of Unix OS you really should check […]