iPhone 15 256 GB, iCloud full, 86.4 GB onto a 1 TB disk
Device: iPhone 15, iOS 18.6.1, 256 GB. iCloud Photos on, 200 GB plan full, upload errors looping. Settings → iPhone Storage: 241.3 GB used, Photos 88.1 GB. Optimize iPhone Storage was off, so the phone still held originals.
Disk: SanDisk Extreme Portable SSD 1 TB, USB 3.2 Gen 2, factory exFAT, stock C-to-C cable. New USB profile, folder azalea/15-lab at volume root. After the first pick, locking the phone meant a manual refresh before isAvailable() — iOS has no attach event.
How the bytes add up
- 17,891 stills, about 71% HEIC, rest JPEG and a few DNG.
- 541 videos, mostly 4K30, about 56.5 MB each.
- 17,891 × 3.12 MB ≈ 55.82 GB plus 541 × 56.5 MB ≈ 30.57 GB = 86.39 GB, against 86.41 GB from summed
stat. The sliver is manifest overhead. - 257 minutes → 86.41 × 1024 / 257 / 60 ≈ 5.74 MB/s. A 10 Gbps disk does not fill because each asset pays PhotoKit export.
Failures
Twenty-three logical names contained :, leftover WhatsApp screenshot titles. After escaping, k in the manifest stayed the original name and p was the on-disk path. Unrecoverable: 0. Around two hours the phone locked; the Live Activity stayed up but the task halted. Reopening resumed from the index.
What we did next
Spot-checked thirty stills including one Live Photo pair. Only then did we enable Optimize iPhone Storage. A week later Photos in Settings was 41.6 GB; the disk library did not shrink. That offload is iOS, not an Azalea button, and it only makes sense after another original exists.