目次
- 対象デバイス
- なぜ必要か
- ifuseのインストール
- iPhoneをパソコンに有線接続
- iPhoneのUDIDを見つける
- ifuseコマンドを使ってiPhoneのファイルシステムをドライブにマウント
- 使用例
- 後片付け(アンマウント&マウントポイント消去)
- 参考にさせてもらったサイト
対象デバイス
接続する側
MacOS(Mojave検証済)
Linux(Ubuntu検証済)
(WindowsもPowerShellやPutty、Windows subsystem for linuxなどを使えば可能だと思われるが今回は検証しなかった。もちろんデュアルブートを使えば可能である。)
接続される側
iPhone
(ifuseを使えばiPadやiPodなども接続できるようだが今回は検証しなかった。)
なぜ必要か
通常iPhoneをバックアップしたり写真などをMacに取り込むには、まず「写真」アプリかiTunesを使わなければなりません。ここで面倒なのが、写真は一度「写真」という名前のついたフォルダーに保存され、その後に思い思いの保存場所に移動されなければいけないことです。これは二度手間である一方で、コンピューター上の空き容量が少ない場合iCloudを経由しなければならないのでとても遅いです。そこで、今回はifuse
コマンドを使って脱獄なしにiPhoneのファイルシステムをドライブにマウントしてみることにしました。リモートサーバーやNASなどを使っている場合、ifuseを使えばコマンド一つでバックアップが可能なのでとても便利な上、ファイルはiPhoneからパソコンを経由し直接サーバーに送られるので、容量の心配もいりません。
ifuseのインストール
インストール前にbrewやaptのアップデートをしっかりやりましょう。
Mac
Macはbrewのレポシトリーにある現在のifuse stableバージョンに不具合があるので、brewの--HEADオプションを使ってlibimobiledeviceの最新版(内部にifuseが含まれる)をインストールします。(github ifuseエラー参照)(2019年9月現在)
$ brew update
$ brew upgrade
$ brew install --HEAD libimobiledevice
上記でエラーが出る場合、libimobiledeviceが既にインストールされている可能性が高いので、以下のコードを試してみてください。
$ brew unlink usbmuxd; brew install --HEAD usbmuxd
$ brew unlink libimobiledevice; brew install --HEAD libimobiledevice
Linux
Ubuntuは動作確認済です。他のディストロは場合によって、stableをスキップして最新版をインストールする必要があるかもしれません。
Ubuntu
$ sudo apt install ifuse
Debian
$ sudo apt-get install ifuse
Arch Linux
$ sudo pacman -S ifuse
Fedora
$ sudo dnf install ifuse
iPhoneをパソコンに有線接続
lightningケーブルを使ってパソコンとiPhoneを接続します。
接続が成功すれば、iPhoneの画面に「このコンピューターを信頼しますか?」と出てくるので「はい」を押してください。
もしそのようなポップアップが出ない場合、何回か出てくるまでつなぎ直してみてください。
iPhoneのUDIDを見つける
UDIDとはAppleのデバイスが固有する識別IDです。ifuseでファイルシステムをマウントするときに使います。
以下のコマンドで識別できます。
$ lsusb -s `lsusb | grep "Apple" | cut -d ' ' -f 2`:`lsusb | grep "Apple" | cut -d ' ' -f 4 | sed 's/://'` -v | grep iSerial | awk '{print $3}'
正常に動作すれば以下のような40文字の16進数が出力されます。これがあなたのiPhoneのUDIDです。
02215c71e7a32fb4bb8662bf3a157df126c33283
もしこれで正常に動作しない場合lsusbコマンドを単体で入力し、40文字の16進数を探してください。
$ lsusb
lsusb
がインストールされていない場合、lsusb
はusbutils
とセットでインストールされるので、上記「ifuseのインストール」項にあるコマンドのifuse
をusbutils
に置き換えてインストールしてください。
ifuseコマンドを使ってiPhoneのファイルシステムをドライブにマウント
いよいよ本題です。
まずはマウントポイントを作りましょう。ここではホームディレクトリを例として取り上げていますが、他のディレクトリでも構いません。
$ cd ~/
$ mkdir iphone
マウントポイントを作ったらifuseを使ってiPhoneのファイルシステムを~/iphone/ディレクトリにマウントします。ここで使うUDIDの見つけ方は前の項で説明しています。
$ ifuse ~/iphone/ --udid [40文字のUDID]
~/iphone/ディレクトリの中は以下のようになっていれば成功です。
$ cd ~/iphone/
$ ls
AirFair DCIM LoFiCloudAssets Photos Recordings
Books Downloads MediaAnalysis Purchases
CloudAssets iTunes_Control PhotoData Radio
ちなみにここで写真が保存されているのはDCIMです。
特定アプリのデータをバックアップまたは編集したい場合
ifuse --documents com.kohei.iphone.recorder iphone-recorder/
com.kohei.iphone.recorderがアプリのバンドルID(bundleId)、iphone-recorderがデータのマウントポイントです。特定アプリのbundleIdを見つける手順は以下のサイトで紹介されています。
https://mrvirk.com/how-to-find-app-bundle-id-ios.html (英語)
使用例
使用例1 ローカルにコピー
$ cd ~/
$ mkdir iphone-backup
$ cp -r ~/iphone/* ~/iphone-backup/
使用例2 リモートサーバーにコピー
sshログインしてコピー対象ディレクトリを作ります。
$ ssh exampleusr@examplehost.com
>Welcome to examplehost.com
$ cd ~/
$ mkdir iphone-backup
$ exit
scpを使ってファイルをサーバーにコピーします。
$ scp -r ~/iphone/* exampleusr@examplehost.com:/home/exampleusr/iphone-backup/
後片付け
iPhoneをアンマウントし、不要になったマウントポイントを(必要に応じて)消去します。
fusermount -u ~/iphone/
rmdir ~/iphone/
後片付けを間違えアンマウントできなくなった場合
fusermount -uz ~/iphone/
参考にさせてもらったサイト
How To Access Photos & Videos On Your iPhone On Linux
How to access iPhone files with a disk mount
Show UDID of iPhone
Using iFuse to Access iPhone Documents and Photos on Linux