iToolkit is a set of open-source shell utilities designed for macOS to help you easily backup your iPhone and import/organize your photos without relying on proprietary software like iTunes or Photos.app.
- ibackup: A clean wrapper for
idevicebackup2to perform full, interactive backups of your iPhone. - iphoto-import: Syncs photos from your iPhone and organizes them into a
Year/Monthfolder structure using hardlinks (to save disk space while keeping your backup mirror intact). - HEIC to JPG Conversion: Optional auto-conversion of HEIC images to JPG during import.
Setting up ifuse on modern macOS can be tricky. Follow these steps for a smooth installation:
ifuse requires a FUSE kernel extension. Download and install the latest version of macFUSE from osxfuse.github.io.
Important
Since macOS High Sierra, you must manually allow the kernel extension in System Settings > Privacy & Security. You may need to restart your Mac.
Install the required command-line tools via Homebrew:
brew install libimobiledevice rsyncSince ifuse was removed from the Homebrew core tap, this repository includes a local copy of the homebrew-fuse tap to simplify installation.
From the project root, run:
# Register the local tap
brew tap gromgit/fuse ./homebrew-fuse
# Install ifuse-mac
brew install ifuse-macInstalling iToolkit on Fedora is straightforward as all dependencies are available in the official repositories.
Run the following command to install the required tools:
sudo dnf install libimobiledevice ifuse rsync ImageMagickNote
ImageMagick is used for the optional HEIC to JPG conversion on Linux.
Ensure your user is part of the fuse group (if applicable) or that you have permissions to mount devices via FUSE.
-
Clone this repository:
git clone https://github.com/yourusername/iToolkit.git cd iToolkit -
Setup your environment:
cp .env.example .env
-
Edit
.env: Set your desired paths for backups and photo organization.IPHONE_BACKUP_PATH: Where full backups will sit.PHOTO_DESTINATION: Where your photos will be imported and organized.IPHONE_MOUNT_POINT: A folder where the iPhone's filesystem will be mounted (e.g.,~/mnt/iphone).
Before running any script, connect your iPhone via USB and "Trust This Computer" when prompted on the device.
To perform a full device backup:
./bin/ibackup.shThis tool automates mounting, syncing, and organizing your photos.
./bin/iphoto-import.shHow it works:
- Mounts: Automatically mounts your iPhone to the path specified in
.env. - Mirror Phase: Creates an exact copy of the
DCIMfolder on your local drive. - Organize Phase: Scans the mirror and creates a
YYYY/MMstructure using Hardlinks. This keeps your photos organized without using double the disk space! - Cleanup: Gracefully unmounts the device when finished.
bin/: The executable shell scripts.homebrew-fuse/: Local Homebrew tap for FUSE formulae..env: Your local configuration (ignored by git).
- "Mount failed": Ensure your iPhone is unlocked and you have tapped "Trust" on the screen.
- "Permission denied" (FUSE): Ensure macFUSE is properly allowed in System Settings.
- Script permissions: If the scripts won't run, try
chmod +x bin/*.sh.
Feel free to open issues or submit pull requests to improve these tools!
MIT