A Mac automation script for managing Apple Photos originals, monitoring iCloud download status, verifying Live Photo integrity, and syncing media safely to a Synology NAS.
- Forces download of all original photos and videos from iCloud Photos.
- Monitors remaining media not yet downloaded.
- Works even with large libraries (background-friendly).
- Syncs originals to
/volume1/photoso Synology Photos can index and back them up. - Preserves:
- HEIC / JPEG / RAW
- MOV / MP4
- Live Photos (HEIC + MOV pairs)
- EXIF metadata (date, geo, camera info)
- Smart deletion safety: uses quarantine folders instead of deleting media permanently.
- Detects missing HEIC or MOV pairs.
- Generates a CSV report for easy review.
- Stores NAS settings in
~/.photos_monitor.conf. - Supports easy reconfiguration from menu.
| Component | Details |
|---|---|
| macOS | Ventura or later recommended |
| Apple Photos | iCloud Photos enabled with Download Originals to this Mac |
| Python | 3.11 or later |
| pipx | For isolated CLI tools |
| osxphotos | CLI interface for Photos library |
| rsync & ssh | Included with macOS |
| Synology NAS | DSM with Synology Photos enabled |
Install pipx and osxphotos:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
exec $SHELL -l
pipx install osxphotos
Developed for macOs only!!
Idea behind: create a local photo/video/live photo copy and then sync to Synology nas loosing less information
Lost information:
- Album Apple partially converted in folder + keyword = recuperabili
- Face Recognition lost because Synology has its own
- Idrive future modifications are not sync : manual update
- Favourite possible conversion to keyword
***************************************************************************************************
Pre-requirements:
Enabled the original photos in mac to force local download of photo library
Required osxphotos and python 3.12
Launch the following command before executing:
1) python3 -m pip install --user pipx
2) python3 -m pipx ensurepath
3) pipx install osxphotos
Then double click to script to execute
Launch the following command to test ssh connection
1) ssh user@nas.local 'echo ok'
2) ask for nas password
***************************************************************************************************
Loop script with sub commands :
1) verify and force the local download
2) export photo to a local folder : "/Users/Shared/PhotosExport/"
3) sync to nas
4) create and store nas configuration