A script that creates a folder with symbolic links (symlinks) to all of the OS X Photos originals which can be rsynced to any location. I use it to share all my photos with the rest of the family using a shared WD EX2 drive. This allows me to avoid adding everything to the Family shared album on iCloud Photos.
$ git clone https://github.com/kasparsd/photos-sync.git
$ php photos-sync/symlink-photos.php
It reads the OS X Photos database (SQLite) at ~/Pictures/Photos Library.photoslibrary/database/Library.apdb
(a copy of it) and creates symlinks to all original photos and videos in the photos-sync/links
folder organized by month and filenames prepended with an md5
hash of the file path to avoid collisions.
It can then be sent to any location using rsync or any other tool of preference. Here is a sample bash script which could be added to cron:
#!/bin/bash
# Ensure that we're always relative to the current directory
cd "$(dirname "$0")"
# Symlink photos and rsync to the network share
php symlink-photos.php
# Mount the network share
mount_afp afp://western.local/Public /Volumes/Public
# Resolve and synchronize symlinks to the network share
rsync -avL links/ /Volumes/Public/Photos
where -L
ensures that rsync resolves the symlinks.
Run it every hour via cron crontab -e
:
30 * * * * pgrep -f sync.sh || /path/to/sync.sh
where pgrep -f sync.sh
will ensure that no other sync process is in progress.