{"id":36307,"date":"2026-08-12T23:31:36","date_gmt":"2026-08-13T06:31:36","guid":{"rendered":"https:\/\/www.podfeet.com\/blog\/?p=36307"},"modified":"2026-08-12T23:31:36","modified_gmt":"2026-08-13T06:31:36","slug":"apple-photos-archiving-for-posterity","status":"publish","type":"post","link":"https:\/\/www.podfeet.com\/blog\/2026\/08\/apple-photos-archiving-for-posterity\/","title":{"rendered":"Apple Photos \u2013 Making Your Memories Last with an Easy to Access Archive"},"content":{"rendered":"<p>Over the last Christmas holidays, I saw <a href=\"https:\/\/mastodon.social\/@rcarmo\/115792050482682107\">a Toot on Mastodon from Rui Carmo<\/a> saying that Apple Photos had dreadful exporting and archiving features. He thought there was a better way and so wrote a Mac command line tool, using Swift, to address what he saw as the shortcomings.<\/p>\n<p>Reading the instructions on GitHub, it seems his primary concerns are around the filenames and the metadata. His tool writes each file using a timestamp for the name, and optionally outputs a JSON sidecar file with key metadata.<\/p>\n<p>While I did like the idea of the timestamp filenames, the rest of it seemed\u2026 overkill for my purposes. If you think it sounds like something you might want, check it out <a href=\"https:\/\/github.com\/rcarmo\/PhotosExport\">over on GitHub<\/a>.<\/p>\n<p>However, listen on for how I had already been doing my own archiving. Mine is a little more involved, but for a periodic task, I don\u2019t find it so onerous.<\/p>\n<p>First, what is my problem to be solved? Put simply, my <em>phone<\/em> photos live only in iCloud Photos. If that gets hosed, or if access is lost (and I am primarily thinking of when I\u2019m gone), then the photos are probably lost. For my DSLR photos, I have long had a rigorous, multi-layered archive process including \u201caccessible\u201d versions \u2014 small, medium quality JPEGs \u2014 of all photos. I wanted accessible versions of my iCloud Photos, too.<\/p>\n<p>The first thing I did was work out how to incrementally ring-fence the photos that were yet to be archived. This was achieved with a Smart Album, which meant it had to be done on the Mac. Realistically, I think however this task is done, it\u2019ll have to be on a Mac.<\/p>\n<p>I had specific requirements on what I wanted to be included. Or, more specifically, what should be <em>excluded<\/em>. My Smart Album criteria say to match all the following:<\/p>\n<ul>\n<li>Camera model starts with \u201ciPhone\u201d \u2014 This excludes imported copies of my processed DSLR photos which, as previously mentioned, I archive in other ways.<\/li>\n<li>Photo is not hidden \u2014 I have a few medical images in my library which are hidden for good reason. No need for those to be preserved!<\/li>\n<li>Photo is not video \u2014 I don\u2019t take many videos, and I decided the amount of space taken up by them isn\u2019t warranted in this archive.<\/li>\n<li>Photo is not screenshot \u2014 I take <em>far too many<\/em> screenshots for various reasons. Again, these are not required for posterity.<\/li>\n<li>Date Added is in the range\u2026<\/li>\n<\/ul>\n<p>This last entry is what I update each time I perform archiving. Generally, I have been doing a month at a time. In fact, after being reminded of the task as a result of the Toot, I decided that from 2025 onwards, I will split them up into monthly folders. So this will now always have a range of dates from the first of the month to the last of the month.<\/p>\n<figure id=\"attachment_36321\" aria-describedby=\"caption-attachment-36321\" style=\"width: 650px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-36321 size-large\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album-1024x510.jpg\" alt=\"A screenshot showing the Apple Photos Smart Album criteria. These are described in the article text.\" width=\"650\" height=\"324\" srcset=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album-1024x510.jpg 1024w, https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album-300x150.jpg 300w, https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album-768x383.jpg 768w, https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album-650x324.jpg 650w, https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2026\/07\/Photo-archive-smart-album.jpg 1296w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption id=\"caption-attachment-36321\" class=\"wp-caption-text\">My Smart Album criteria.<\/figcaption><\/figure>\n<p>Once I have updated the Smart Album to select a new month, I simply select every photo in it, with Cmd-A, then Export Originals, with Cmd-Opt-E. I select a special folder in my Pictures folder, called Exports. Using Export Originals means I get both HEIC files and the accompanying MOV files for any Live Photos.<\/p>\n<p>Originally, that was the full export process, but with many old photos from old phones, I\u2019d ended up with duplicate file names that macOS would suffix with numbers. My decision to segregate months would have addressed that, but Rui\u2019s post got me thinking.<\/p>\n<p>Now, the Exports folder is watched by <a href=\"https:\/\/www.noodlesoft.com\" target=\"_blank\" rel=\"noopener\">Hazel, the automation app from Noodlesoft<\/a>. Hazel runs a couple of rules that rename each file based on the date and time they were captured, addressing the duplicate name issue, and then sort them in to year\/month folders based on the that.<\/p>\n<p>Once Hazel has done its thing, I move them to a folder on an external hard drive that is included in my Backblaze backup. That\u2019s it! I have the photos successfully grabbed from iCloud and placed somewhere more accessible. It generally takes me less time to update the Smart Album and select everything for export than it does for Photos to actually export 50\u2013100 photos.<\/p>\n<p>It\u2019s easy to keep track of the last time I did the archiving task, too, because the Smart Album definition will show the last month I processed.<\/p>\n<p>Maybe you prefer Rui\u2019s approach, or perhaps you\u2019ll prefer mine, or perhaps you\u2019ll come up with a hybrid approach or even your own. But, please, do come up with <em>something<\/em> that makes your photos more accessible. There have been many words written about the impermanence of digital media over the years. We owe it to future generations to make it as easy as possible to access our recorded history.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last Christmas holidays, I saw a Toot on Mastodon from Rui Carmo saying that Apple Photos had dreadful exporting and archiving features. He thought there was a better way and so wrote a Mac command line tool, using Swift, to address what he saw as the shortcomings. Reading the instructions on GitHub, it [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":23711,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[147],"tags":[168,2632,5973,42,53],"class_list":["post-36307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-posts","tag-apple-photos","tag-archive","tag-family","tag-jpeg","tag-organization"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2021\/06\/Photos-icon-1.png","_links":{"self":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/36307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/comments?post=36307"}],"version-history":[{"count":3,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/36307\/revisions"}],"predecessor-version":[{"id":36521,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/36307\/revisions\/36521"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/media\/23711"}],"wp:attachment":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/media?parent=36307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/categories?post=36307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/tags?post=36307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}