Comment by gerdemb
1 day ago
HN disclosure: I’m the author of Photos Backup Anywhere, but this thread mirrors the exact issues that pushed me to write it.
One thing that surprised me when digging into Apple Photos is how much state isn’t represented by just files-on-disk. Albums, Live Photos (paired assets), bursts, slo-mo, edits, and even “simple” things like adjusted capture dates are all tracked separately, and most export/backup tools end up flattening or partially reconstructing that on restore.
The approach I took was to treat Photos as the source of truth and verify restored items against it, rather than assuming filesystem metadata is enough. As far as I know, this is the only tool that restores albums and correctly round-trips all Photos item types while preserving location data, creation dates, and modification dates when restoring back into Photos.
Project page is here if it’s useful: https://photosbackup.app/
Happy to explain details if anyone’s curious — there are a lot of sharp edges in Photos once you go beyond “export originals”.
If you manually edit the date on a photo, is that also stored separately from the image file itself? Wondering because I've noticed photos I've backed up to Immich from iOS photos don't respect that edited date and reflect whatever the original date was.
I've been thinking about looking into a fix for this since it's bugged me a bit.
My current process for offloading photos off the iPhone is to copy them in subsequent batches of '0-9999' from the 'Image Capture' app.
This is because I usually have far more than 10K photos and apple starts renaming the files after 9999 as 00001(1) for the rest. This is pretty undesirable.
Is there a way for me to export unmodified raw/jpeg/live/videos off the iphone to an external drive without a macbook with a large enough ssd, and wanting to use icloud as an intermediate bottleneck?
I use libimobiledevice on linux
plug iphone into usb. lsusb should show it.
I backup my photos with:
Actually, I backup all of /mnt not just DCIM, but that answer is for you. I also backup the entire phone with:
but in this form it either does the photos as data files, or doesn't back them up. I think it is a complete backup.
Do you take into account the iPhone not holding the original images of every photo? It will offload originals and just keep thumbnails if the library is too large.
Mine is approaching 1.5TB, I’ve got no hope of keeping that all on an iPhone, and also no guarantee that any given photo is fully available locally.
3 replies →
> My current process for offloading photos off the iPhone
I'm not sure about Linux, but my workflow on Windows and MacOS is to frequently back up my iPhone locally (which you should do anyway because few incorrect PINs can security lock your phone [1]) and use utility like backup extractor (e.g. [2] but there are many others) to extract all photos from the backup. This effectively removes the need to use iCloud.
[1]: https://support.apple.com/en-us/105090?device-type=iphone
[2]: https://github.com/joz-k/ios_backup_extractor
Does the PhotoSync app permit that? I use it to copy files to my NAS but it has some USB-related options I never explored. I used to use Image Capture but heard of PhotoSync and have never looked back.
With Photosync I have our photos export to my NAS and have it update the file names with the timestamp + original file name, which makes it so much more sane to sort through.
Example:
Original: IMG_9999.JPG
Server-side file: 2015.01.15__IMG_9999__.JPG
That looks like it might do the trick. I feel like this should be something possible only using first party apps but I'll take it! Thanks.
2 replies →
I did it on Linux once I extracted them all as-is in the strange storage way that iOS stores them but I dont recall steps to make it mount the drive.
That would be perfect, I might chase down this path again. It's been a while since I've tried to directly mount the iphone as a drive on linux.
I have taken time to slowly extract photos from old androids and its such a nightmare, and if you cant get a meaningful interface to load you have to resort to tooling that scrapes the whole drive and hope it grabs everything.
My current workflow for this is to install the 'simpleSSHD' app on the android phone and rsync the files off at full network speed.
The sshd running on the phone also supports key based auth , so it's pretty simple to automate.
Yeah but for some phones the storage is full ;) I had to figure out how to remove just enough to root it and then just adb in for one phone then I learned that if I extract too quickly it gives up the ghost so I have to add a delay
Awesome! Thanks for posting, I've been looking for exactly this kind of project that takes end to end pristine restoration seriously.
The FAQ states you back up the originals as plain images files in YYYY/MM/DD format, which is great for integration with other tools. What about metadata? Is it in a format that lends to integration with other tools, say if you stop developing/supporting your app for some reason?
Metadata is stored in an SQLite database alongside the backed up files. The format is not documented, but should be self explanatory if you examine the schema.
Excellent, thanks!
Thanks for creating this amazing tool. A requirement for it to work is disabling "Advanced Data Protection". What are the implications of doing this?
Pretty severe -- ADP allows users to store data with e2e encryption.
Disabling ADP is a pretty serious* thing to do -- and pretty disappointing since I was interested in the product. Since it's OSS though this might be something that can be worked around in the future.
That’s a good question. To be completely honest, I don’t know much about Advanced Data Protection myself, and I didn’t do anything specific in the app to detect or interact with it.
I’m actually curious: how did you discover that it doesn’t work when Advanced Data Protection is enabled? Was it through an error message, incomplete backups, or something else you noticed?
I did not discover it, disabling ADP is listed under "iCloud Prerequisites" on the/your GitHub page.
1 reply →
Is the app bound to the purchasers iCloud, or can I also use it to download my partners images?
Thanks for commenting, do you support S3 compatible targets? Backblaze B2, for example.
Not directly, no. If you can mount the S3 target as a drive, it can be used as a backup destination.
Love this app! Kudos
This looks interesting. Can I use it to back up photos from one (old) photo library, and restore them into another (newer) one?
I'm extremely interested in any process that would allow me to create file-system-level backups of individual photos. Will your tool do that?
have you looked at parachute backup? they also boast ability to backup the more mercurial types of iPhotos data.
Backing up “mercurial” Photos data is only half the problem. The tricky part is restoring it in a way Photos actually recognizes as equivalent to the original library state. Photos Backup Anywhere restore works by re-importing items while explicitly reapplying Photos-level attributes: paired assets for Live Photos, burst membership and picks, slo-mo metadata, edits, locations, adjusted capture dates, and then reconstructing albums after the items exist again in the library.
In other words, the filesystem copy isn’t treated as the source of truth. The restore verifies items against what was backed up and only then rebuilds higher-level structure like albums. That’s the piece I didn’t see addressed elsewhere, and what originally motivated me to build it.