Note: This article was updated (26/2/2015) to reflect some changes to how BTSync works :)
So you want to have a single Adobe Lightroom catalog that you can use on multiple computers and have them all show the same pictures and edits? But you don't want to manually copy files around or carry hard drives in your bag.
OK so this has taken me bloody ages to get right but its not that complicated if you have some basic computer skills and don't mind getting your hands a little dirty. A while back I figured out how I could do this with Apple's Aperture over in this article but since then I have moved to using Lightroom because... well they had nicer presets at the time :P I don't have any love of either product so its good to know how you can bend them to do what you want.
The basic problem with Lightroom catalogs is that they don't like being on a network drive and not everyone is happy lugging a portable hard drive around between computers with their catalog's or RAW files on. This is the usual hack to get around it. It is a pain and you run the risk of losing your archive unless you have a decent backup strategy.
The way I have my systems setup is like this:
- I have a central NAS connected to my network. All my computers can map to this in the same way.
- All my computers are Mac. This is only a issue if you are sharing a Lightroom catalog between a Windows and Mac machine as the drive mapping on a Mac is something like "/Volumes/Graphics/Images" whereas a Windows box will be "G:/Images/"
- The individual machines don't all use a single Lightroom Catalog file but rather each has a copy of the catalog that is synchronised over the local network or Internet.
So how do I synchronise the catalogs automatically?
This is where BitTorrent Sync (BTSync from now on) comes into the mix. BTSync works in the same kind of was as DropBox with the advantage of being completely controlled by only you and with no size limitation. You can also use a piece of software called SyncThing which is basically the same as BTSync but with Open Source roots.
What I have done is set up a folder that BTSync will synchronise onto my other machines. When I modify a catalog on my desktop, the changes will be replicated to my laptop and visa versa. A large Lightroom catalog can be anywhere from 1Gb or larger. BTSync should only send the parts of the file that have changed over the net so even with a slow bandwidth, you will be able to keep a catalog in sync over the internet. This does depend on what parts of the file are changed and sometimes it will just copy the entire file. Having all your machines you want to keep in sync on the same network is a best practice. Lightroom does generate a couple of files and folders that you do not want to replicate between machines. These are the following:
- 'CatalogName Previews.lrdata' - This folder contains all the temporary previews for thumbnails and 1:1 previews lightroom uses to run smoothly.
- 'CatalogName Smart Previews.lrdata' - This folder contains smart previews that Lightroom generates if you want to edit on a laptop without the RAW files being online. This is brilliant for laptop warriors on the road.
- 'CatalogName.lrcat.lock' - This file is a lock Lightroom creates so other processes wont try modify and potentially corrupt the catalog.
- 'CatalogName.lrcat-journal' - A temporary store before final info is written to the catalog.
So how do we exclude these files and folders? This is where a bit of digging under the surface comes in but before we do that lets start of with getting BTSync working.
You should alway make a backup of your catalog before attempting any of this. I have been running it without any problems for about 2 months but computers are shit and will break. I have my main catalog on a computer running Time Machine backups and create a manual backup every couple of days just in case.
- Download BitTorrent Sync (BTSync) from their website and install it on all the machines you are going to keep in sync
- On the machine with your original catalog or catalogs; create a BTSync share by either running through the setup wizard or in the main interface clicking on the '+ Add Folder 'button.
- Click the 'Generate' button. This will create a shared secret key that you will need to copy down and not let anyone else see. If somebody else copied down this Shared secret, they will have access to your Lightroom catalogs. (If you are worried about somebody guessing your Shared Secret, don't worry about it too much. Steve Gibson gives a good description of its working and how difficult it is to brute force here on episode 402 but there are enough combinations of letters and numbers in that little box to address each individual atom in the Universe with its own key. )
- Now comes the secret sauce. BTSync will look for a hidden folder called ".sync"
Inside this is a file called IgnoreList. There is a good article here on what all the options are for this file.Eg:
In this file we define all the folders and files we don't want sent over the network. Open this up in notepad if you are on Windows or pop open a terminal and navigate to the folder you are sharing eg 'cd Pictures/Lightroom-Catalogs' and then open it in a text editor eg
cd .sync nano IgnoreList' (Note: with the new version of BTSync, this is now named IgnoreList wheras previously this was just a file in the root folder called ".SyncIgnore") This will create the file if it does not already exist.
- Fill in the following lines:
/AO2-2012 Previews.lrdata/* AO2-2012 Previews.lrdata.!sync AO2-2012.lrcat.lock AO2-2012.lrcat-journal /AO2-2012 Smart Previews.lrdata/*
Obviously my Lightroom catalog is called 'AO2-2012.lrcat' so replace your catalog name or names with your own.
- Create the same file on your other machines in the root folder of the share you setup on them. You can also just copy this file to the other machines.
Thats it! Restart BTSync on all the machines and after a few minutes your catalog will be replicated to all the machines and kept up to date. A archive is automatically created in '.syncArchive' folder if your catalog is smaller than 1Gb so remember that if you start running out of space for no reason. You can modify BTSync's settings to lower this number.
One of the best advantages to this setup is that I can now take my entire library of near 100 000 images on the road with me. When I want to work on a project in Lightroom on the road, I can just select the folder and generate Smart Previews for that project. I can do basic edits on the images (nothing involving external plugins or Photoshop) and hve all the changes synced back to my other machines.
Another great advantage is you can setup a lot of NAS devices with BTSync now to automatically sync a version on itself for added redundancy and to have a catalog with your RAW files.
Hope this helps someone. Let me know if there are any questions.