LoginSignup
13
14

ターミナルを使ったiPhone写真その他データのバックアップ

Last updated at Posted at 2019-09-22

目次

  1. 対象デバイス
  2. なぜ必要か
  3. ifuseのインストール
  4. iPhoneをパソコンに有線接続
  5. iPhoneのUDIDを見つける
  6. ifuseコマンドを使ってiPhoneのファイルシステムをドライブにマウント
  7. 使用例
  8. 後片付け(アンマウント&マウントポイント消去)
  9. 参考にさせてもらったサイト

対象デバイス

接続する側

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がインストールされていない場合、lsusbusbutilsとセットでインストールされるので、上記「ifuseのインストール」項にあるコマンドのifuseusbutilsに置き換えてインストールしてください。

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

13
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14