On-Demand Cloud Storage with Lightroom and Odrive

Posted by on Sep 14, 2017 in coding, photography | No Comments

The Problem

Skip ahead to “The Workflow” if you don’t care about the background.

As someone who is more often on the road than not, I needed to figure out some kind of cloud storage solution for my photos that could be accessed — and worked with — anywhere with internet. I also wanted something that didn’t involve “archiving” photos to another Lightroom catalog where they would be harder to access and filter for — if I’m looking for a specific keyword, I want to be able to search my entire library, not have to open multiple catalogs and hope I don’t miss an old photo that might be exactly what I need.

There are plenty of cloud storage options out there, but at the time that I started this, Amazon Cloud Drive was the only one offering an unlimited plan. They’ve since eliminated that plan, but Amazon Prime users get unlimited photo and video storage included — which is incredible. It includes RAW files, JPGs, whatever, and all sorts of video formats, and seems to have no restrictions on file structure or anything — so you can store them in a normal folder structure on Amazon Cloud Drive and still have it only count against your “free” Amazon Prime photo storage.

I settled on Amazon Cloud Drive and went about figuring out a way to “mount” it as a network drive so Lightroom could work directly with photos on Amazon Cloud Drive. Turns out, there are ways to do this, and they are all unreliable and slow. Scratch that. What I wanted was something like the Google Drive client — where I could sync and unsync files from my computer that exist all the time on Google Drive.

Enter odrive. This app can serve as a client for any number of cloud storage providers and introduces a slick interface for syncing your local storage with your cloud storage on demand. There are premium features that are moderately cool, but the key features for my Lightroom workflow are all free.

For a while, I used odrive and some hacky command-line tools I’d written to push and pull photos for use in Lightroom, just keeping my “absolute best” (over the years) on my laptop and “unsyncing” everything else. This worked ok, but I really wanted a way to push and pull files from odrive within Lightroom, making it possible to find a file I needed via the catalog, pull it from the cloud, edit it and export it all without leaving Lightroom.

So I wrote a Lightroom plugin called OdriveSync.

The Workflow

Preparation

  1. Install odrive and link with your preferred cloud storage provider
  2. Move your Lightroom photos into the appropriate folder (in my case, this is ~/odrive/Amazon Cloud Drive/). NOTE: it is important to do this from within Lightroom so that the app maintains the appropriate paths for the files in the catalog data.
  3. Ensure that “automatic sync” is enabled in odrive so that it will upload your photos to your cloud provider.
  4. Install the Lightroom plugin OdriveSync. It’s in beta right now, please contact me if you’d like to try it out.

I initially stored my previews and lrcat file in my odrive directory as well, but they change so frequently it caused odrive to get bogged down resyncing them all the time. I now store them normally on my laptop, but it is important to back them up regularly — a lost catalog would probably be worse than a loss of a few thousand photos.

Day-to-Day Use

I have a Macbook Air with a solid-state hard drive. This means I just really don’t have much space on my laptop, so I need to limit the number of photos that are actually stored on it. Generally, I keep a relatively small subset of my favorite historical photos and the last few thousand photos I’ve taken and am still working with on-disk. Everything else is “unsynced” — meaning stored exclusively on my cloud storage provider via odrive.

If I find that I need an old photo — to submit to a magazine, for a blog post, just to send to a friend — I locate that photo in the Lightroom catalog and then “sync” that photo. Lightroom automatically rediscovers it (since its path hasn’t changed) and I can work with it as normal.

If I no longer need a photo for day-to-day use, I “unsync” it. That deletes the local copy leaving just a placeholder that points to the cloud-copy.

My OdriveSync plugin allows you to take those steps directly from the Lightroom interface.

To Sync

  1. Select the photo or photos you want to sync (download to your computer) in the catalog.
  2. Click “Library > Plug-in Extras > OdriveSync > Sync”
  3. The process will continue in the background — it can be canceled as any Lightroom progress can by clicking the “X” next to the progress bar. As each file is downloaded, the “!” icon that indicates Lightroom can’t find the file will disappear.

Syncing four selected images from Mexico.

To Unsync

  1. Select the photo or photos you want to unsync (delete from your computer).
  2. Click “Library > Plug-in Extras > OdriveSync > Unsync”
  3. The process will continue in the background — it can be canceled as any Lightroom progress can by clicking the “X” next to the progress bar. As each file is deleted, the “!” icon that indicates Lightroom can’t find the file will appear.

What Are You Syncing About?

Sorry, couldn’t resist.

GIVE ME THE PLUGIN PLZ

It’s still in beta right now — it works for me, on Lightroom CC 2015.6.1 on Mac OS X, but has not been tested in other environments. If you’d like to try it, please contact me!

Other Strategies?

How have you solved this problem? Comment here or email me, would love to hear about other ways people have dealt with this.