I just wanted to back up my iPhone on Ubuntu
28 September 2026
Linux has no iTunes, and my external drive wouldn’t mount either: “wrong fs type, bad superblock”. I handed the problem to Claude Code in my terminal and watched what it did.
The dead ends
None of them were exotic, and Claude found the cause of each one in the logs:
- The NTFS drive had been unplugged from Windows without ejecting, so the kernel driver refused it. Mounting through ntfs-3g (
udisksctl mount -t ntfs) worked without sudo. - The usual iPhone tools need sudo to install.
pymobiledevice3, a pure-Python replacement, installs into a user environment. - The phone disappeared while
lsusbstill listed it. The usbmuxd log showed the USB hub had dropped it. Plugging straight into the laptop fixed it, and also unmounted the disk that shared the hub. - Pairing ended in an error, yet the pairing had worked. Only a second copy of the pairing record had failed to save.
Then the phone asked for its passcode, and the full encrypted backup ran: 121 GB in 1 h 26 min.
The idea that mattered
I asked whether a later backup could pick up only what changed. It can, and that answer surfaced the real problem: an iPhone backup mirrors the phone. Delete a photo, and the next backup deletes it too.
So Claude added a second archive with one rule: it only ever adds files. Every photo and video is copied as a plain file into year and month folders, and a record of what’s been copied means reruns take only the new ones. The first run archived 20,371 files, 75 GB.
It’s the same rule as tidy: the tool that touches your data never gets a path to delete it.
From chore to plugin
“Can other people use this?” turned it into a product before the evening was out:
- A Claude Code skill, so the next backup is one sentence: “back up my iPhone”
- A public repo with nothing specific to my machine
- A plugin that passed all 7 checks in Claude’s new plugin directory, where it’s now in review
The next morning, a full review of the repo found real bugs: the wrong mount path on stock Ubuntu, a case where a crash could leave duplicate copies, missed iCloud-synced photos, and the backup password landing in shell history. Each fix shipped with a test or a check against my real phone.
Claude Opus 5.5 did the engineering, wrote the docs, and composed the soundtrack for the video above. I brought the chore and the questions.
Try it
In Claude Code:
/plugin marketplace add abhibansal60/iphone-backup-linux
/plugin install iphone-backup-linux@iphone-backup-linux
Then plug in your iPhone and a disk and say “back up my iPhone”. The code is on GitHub.