Introduction

Friendly warning: this is going to be very free form and not really worth reading, but overall its an attempt to find an elegant solution to a problem. I don’t expect anyone to read it - ever. I am just hoping that writing about it will help me to craft a solution that I don’t completely hate and that is reliable enough to bother to build and use. With that warning out of the way, I will begin by describing the problem I am trying to solve.

Each week we produce around 100GB of media data at church. At the moment, that data is produced from a variety of sources..

My current process looks like this:

  1. Insert each card/drive one at a time and manually copy to proper location in weekly folder structure on laptop
  2. Transfer files from iphones using localsend to local folder on laptop
  3. Use Forklift app to sync from laptop to “A” archive drive on server (more about this later, if I get to it)
  4. Use Forklift app to sync from “A” archive drive on server to “B” archive drive connected to laptop

Sounds simple enough but its a very manual and fairly slow process.

Goal

So the goal is to create a solution that allows for fully automatic importing of files from the full variety of sources to the correct destination. Eventually I want to expand this to also handle auto archiving to “A” and “B” archives, as well as the backblaze archive. Hardware wise, this part should be pretty straightforward - I will pick up a USB 3 hub and 3-4x SD card readers, plug it all in to a system (likely the HUD unit since its low power, on my desk and powered on during the day when I would need to use it for this).

To make things a little faster yet still safe, I will pick up a pair of SATA SSD drives, slap them in a mirrored ZFS pool and use them as a quick destination for imported media. I want to use dual SSDs for redundancy and performance. Especially when archiving to multiple destinations, it will be awesome to run it in parallel.

The main problem

OK so the above goal seems pretty straightforward, but the problem I am having is finding a truly automatic solution for importing. The actual import process will be easy - copy files from the source drive then drop them where they need to go. The issue is identifying what the source is so that it can be placed in the correct destination. I am far too OCD to just blindly import the data into one giant folder. Not. Gonna. Happen.

Possible solutions

Now we get to the real point of this post - trying to find a solution to automatically and reliably identify the source.

Current plan

Use a variety of known parameters to identify the source. Current list of parameters that are to be used:

What to do if more than one identical source? For example, we have two Canon EOS cameras of the same model - cam 1 and cam 2, operated by different people, how do we differentiate between the two?

Summary

OK I realize this was not anything worth reading, but it helped me come up with a solution to identifying the source so now its just time to build it out in code. I will likely add more to this article when I encounter the next annoying blocker that I need to write through to find a solution.

Oh btw, this is going to be written in Go - most likely.