Photo backup on external hard drive


due to the upcomeing change of google photos to a pay service I am looking for an alternative. I have made some good experiences with syncthing for synchronizing documents for university so I thought maybe it is possible to use it for this purpose as well. I can imagine two possible ways to use it:

  1. Synchronize the photos folder of my smartphone with a folder on an external HDD on my laptop. Then thy syncing should only take place when the HDD is connected. I believe this works already even though I do not know how it will behave if I take a lot of pictures while the HDD is disconnected. However this has a major drawback: All photos have to be saved on my smartphone which is impossible. This brings me to the second variant:
  2. The HDD is connected to a raspberry pi which synchronizes photos from all my devices to it. However in order to see the photos on other devices as far as I know a new feature would be needed: The possibility to share a folder without downloading its content. It would need to work just like the dropbox app. Or better the ability to selectively download files (or folders) within a shared folder. Maybe this could work just like a network folder? Also I am wondering if it then possible to integrate the photos only accessable via network into popular gallery apps? I did notice that they get confused very quick, for example all the dates are messed up if you move photos from internal storage to SD card. Do you think this is doable?
1 Like

SyncThing is a syncronization program, not a “copy stuff from one place to another” program.

With that said, let me tell you how I use SyncThing. Maybe you find it useful as well.

I have a server in the wardrobe running SyncThing. The DCIM folder on my phone is syncronized with a folder in the server. A script on the server copies new files in the DCIM folder to another folder, my main photo folder.

That way I can delete older stuff on my phone whenever I want to free up some space. And I can arrange photos in the main photo folder to my liking.


I’d say to use the RaspberryPi as a local nas device. For what it’s worth, I use a qnap nas for the purpose. This device is always on and has its syncthing setting roughly as follows:

  • only sync local devices so local-discovery is on. (no global discovery, no nat, no proxy, no relay)
  • Connect the devices and auto-discovery of the directories to sync.
  • Put the directories backup in ‘simple file versioning’

On the android devices:

  • Only sync on wifi
  • only sync on my local wifi
  • only sync while chariging (Most devices are charged over night)
  • all sync-directoris are ‘sent only’.

For my laptops: I can access the pictures at the nas using what I have configured there to get them: smb, nfs, webdav, etc.

In the future I might even add the laptop to the sync between the android devices and the qnap, just to have an additional copy of the pictures locally. This directory will be ‘receive only’ to avoid removing of pictures from the laptop to be removed from the mobile devices and/or nas too.

Would you be willing to share more info about the script you use as this is something I am interested in doing as well.

1 Like

I use Syncthing instead of Nextcloud client to keep photos and documents in sync with my home computer(s) and my Nextcloud instance.

The reason I choose/use Syncthing is because I found no NC client running as a demon in background while I’m not logged in to my Linux Desktop. Photos are uploaded directly from my (i)Phone to my Nextcloud and are synced to my linux client.

This setup works pretty fine for me. :slight_smile:

For a “backup” (or “copy”) on an external disc/stick I would rather use rsync -av --delete ~/Pictures/ /mnt/external_disc/Pictures/

But it should be also possible to get another systemd-Unit for a “dummy”-User that receives-only Photos from your “main” system-Unit which sends-only to this demon. GUI must be running on a different port and this unit gets a new ID. This systemd-Unit must only be started when external-disc is connected using udev-rules (or by your command).

For example:

syncthing@thomas.service and syncthing@extern.service

🦎🖥  thomas@merz-nimbus:~ [0/1483]
09:42 $ ps -ef|grep syncthin
extern    2615     1  0 Mar28 ?        00:00:04 /usr/bin/syncthing -no-browser -no-restart -logflags=0
thomas    2621     1  0 Mar28 ?        00:00:05 /usr/bin/syncthing -no-browser -no-restart -logflags=0
thomas    2789  2621  1 Mar28 ?        00:38:26 /usr/bin/syncthing -no-browser -no-restart -logflags=0
extern    2791  2615  0 Mar28 ?        00:03:34 /usr/bin/syncthing -no-browser -no-restart -logflags=0
thomas    6530  5442  0 09:42 pts/0    00:00:00 grep --color=auto syncthin
🦎🖥  thomas@merz-nimbus:~ [0/1483]

Regarding my last post it would be better to use rsync instead of another instance for local folders: My example is a “fake” one! But I really have more than one ST instance running, but for me, my wife, my kids, … All are syncing to the Nextcloud instance as written in my first post.