Trying to get advice for photo/files storing/syncing
Hi. Sorry for the vague title. Nowadays I'm using multiple computers and get to need files and such from other machines pretty often. My music and photos library has also increased and it's getting much harder to maintain with it being scattered across many machines. Basically I'm trying to have a photo library and plain files(documents, music, etc) shared across computers.
For plain files I'm thinking nfs+samba would be the best approach, but there are problems. They have speed issues, but as I can't afford large space for all my machines I can't keep a full rsync'd local copies everywhere too.
The photos are my bigger concern, as I'm looking for a tagging feature. A plain directory structure would be easy to sync but those tags would differ by programs.. desktop programs like digikam or xnview(sadly proprietary) would work well if I didn't need syncing, but I'm not sure if they'd work reliably with all their configs/files stored over nfs. Plus, these programs would have incompatibilities by platform and not work at all on android.
Web based solutions like Immich or NextCloud Photos appear to be pretty famous nowadays, but I'm not sure about them as well. They seem to be overkill for my purpose, and those mostly tend to be very new & i'm not too sure about their future, as they store tags and such on their own formats.
Edit: Oops, forgot to say. I have multiple servers right now, one offsite running FreeBSD, another running Devuan, and one at home running FreeBSD.
I'd love to hear how others are maintaining their system. Thanks for reading.
The best place to start would be to ignore what you currently have, for the moment, and think about your requirements, at a high level.
In the corporate world, we start with Business/User Requirements - think "what does a user need to be able to do", these are pretty abstract things like:
Have all photos accessible on mobile
Have all photos accesible by App A
Have all photos accesible by App B
Etc
Then take all those User requirements as a guide to the Functional/System/Technical requirements (what solution meets which requirement?)
I kind of just focus on data stability myself (3 local copies, one cloud backup, with local copies being sync'd manually, to act as a sort of buffer from my own fuckups), and implement different solutions for each requirement/system.
Like Syncthing on Windows/Linux/Android, because it just works for regular sync, Resilio on my Media server and Mobile devices, because it has Selective Sync, Tailscale on mobile devices and a single server at home for remote access and remote control.
Selective Sync is the one feature that Resilio provides that I use.
It enables me to grab any file, using any device, at any time, from anywhere, over any network, simply and quickly. I really wish Syncthing had this capability. Oh well.
So if I'm traveling, I can download a movie from my library with my phone or iPad while connected to hotel wifi. The Resilio UI is simpler than turning on Tailscale, launching a file explorer connecting to my server, then copying. Plus it's a robust sync job - I don't have to think about it, if the network goes away, Resilio will pick up the sync again when it can. On my mobile devices, Resilio is only run if started by the user, but Syncthing runs all the time to ensure stuff like photos, downloaded files, Backups, etc, are sync'd to my server.
I switched from Resilio to Syncthing for everything else (mobile devices mostly, since I can use other tools on laptops), because it's much lighter to run. Resilio is hell on mobile devices if you have a large library, as it keeps the index in memory, while Syncthing uses a file-based approach for indexes. Resilio is also resource intensive on my server - again because of the large media library.