iPhone Backup Extractor には、iOS のバックアップやデバイスを操作するためのコマンドラインツール rictl が含まれています。rictl は iPhone Backup Extractor が動作するすべてのプラットフォームで動作し、引数やヘルプの構文、シェルの戻り値の点で、一般的な UNIX 系のコマンドラインツールと同じように使えます。
主な機能
- UNIX 互換の形式 (
$?のシェル戻りコード、ロケールに応じた日付形式、awk で扱いやすい出力、エクスポートしたデータのstdoutストリーム) - 複数の検索パスの同時指定に対応
- あらゆる形式の暗号化バックアップに対応
- 相対パスとホームディレクトリ基準 (
~) のパスに対応

macOS のターミナルで表示した rictl

Windows のコマンドプロンプトで表示した rictl
クイックスタート: iOS バックアップからデータベースファイルを抽出する
ローカルシステムで利用できるバックアップを検索します。
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
バックアップからすべてのデータベースファイルを抽出します (正規表現の形式に注意してください)。
$ rictl backup extract -u 00000000-0000000000000000 -r "\.db"
Extracting HomeDomain/Library/Voicemail/voicemail.db
Extracting HomeDomain/Library/Safari/Bookmarks.db
Extracting RootDomain/Library/Caches/locationd/consolidated.db
Extracting WirelessDomain/Library/CallHistory/call_history.db
...
コマンド用語集
ヘルプの表示
rictl のヘルプは、一般的なツールと同様に rictl help コマンドで表示できます。
$ rictl help
Usage: rictl <command> [args]
Available commands:
backup Work with a local backup
device Work with devices over USB and Wi-Fi
Use 'rictl help <command>' for detailed help on a particular command
rictl には、ローカルのバックアップを操作する backup モードと、USB または Wi-Fi 経由で iOS デバイスを操作する device モードがあります。
ローカルのバックアップを操作する
$ rictl help backup
Usage: rictl backup <command> [args]
Work with local backups
Available commands:
search Search for local backups
info Show info about a backup
list List files in a backup
extract Extract files from a backup
export Export data from a backup
Use 'rictl help backup <command>' for detailed help on a particular backup command
バックアップを操作する際のオプションは、search、info、list、extract、export の 5 つです。
search を使ってローカルの iOS バックアップを検索する
$ rictl help backup search
Usage: rictl backup search [args]
Search for local backups
Available arguments:
-s, --search-path=VALUE path to search for backups (two directories deep)
-l include full path in listing output
-h, --help show this message and exit
最もシンプルな使い方では、search がお使いのシステム上のバックアップを表示します。
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
表示されるフィールドは空白区切りで、次のとおりです。
UDID- バックアップの作成日時
- iOS デバイスのバージョン
- iOS デバイスの識別子
- バックアップのステータス:
okまたはin-progress
UDID には 2 つの形式があります
Apple の UDID には 2 つの異なる形式 があります。rictl はどちらにも対応しています。
オプション -l でバックアップのパスを表示する
-l を使うと、バックアップのパスを示すフィールドを出力に追加できます。
$ rictl backup search -l
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok /Users/afit/Library/Application Support/MobileSync/Backup/00000000-0000000000000000
オプション -s で追加のパスを検索する
-s を使うと、バックアップを検索する際の検索パスを追加できます。
$ rictl backup search -s /Users/afit/Google\ Drive\ File\ Stream/My\ Drive/My\ backups/ -s Downloads/
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
DB72CB76A00CB81675F19907D4AC2B298628D83C 09/06/2014 13:57:08 7.1.1 iPhone6,2 ok
DB72CB76A00CB81675F19907D4AC2B298628D83C 23/07/2014 12:37:55 8.0 iPhone6,2 ok
DB72CB76A00CB81675F19907D4AC2B298628D83C 28/07/2014 12:43:56 8.0 iPhone6,2 ok
CDBF062964613D325EB9E41AD83E85EA16B7E399 10/02/2014 14:29:59 7.0.4 iPad4,1 ok
57BE3B9E8087809F53666B887B9DD81B06299078 29/07/2014 14:18:54 7.1 iPhone3,1 ok
F60040E968F533434B9B6CCA10C7E0C673B7CC13 07/10/2014 09:44:17 8.0.2 iPhone7,2 ok
CC5D2A27218BD9E4A14B1E59918171A8676EF5BB 26/03/2015 11:07:42 2.2.1 iPhone1,1 ok
46A663D1A1A5C5146476A2C6164EA5F5FE771294 26/03/2015 11:09:54 4.2.1 iPhone1,2 ok
9F8FDEEFFCDA4BD53CA4D6F8229A04497CA5FA4C 31/10/2016 17:05:36 10.1.1 iPhone9,4 ok
- 一般的なツールと同様に、パス内の空白は引用符で囲む (
"My folder") か、エスケープ (My\ folder) できます -sには、バックアップのフォルダ、または バックアップを 含む フォルダを指定できます
デフォルトの検索パス
rictl は、検索の際に常に iOS バックアップのデフォルトの検索パス を対象に含め、iPhone Backup Extractor で設定済みの追加の検索フォルダも対象にします。
info を使ってローカルの iOS バックアップから情報とメタデータを取得する
$ rictl help backup info
Usage: rictl backup info [args]
Show info about a backup
Available arguments:
-u, --udid=VALUE backup UDID
-s, --search-path=VALUE path to search for backups (two directories deep)
-h, --help show this message and exit
実際に試してみましょう。
$ rictl backup info -u 00000000-0000000000000000
UDID: 00000000-0000000000000000
Path: /Users/afit/Library/Application Support/MobileSync/Backup/00000000-0000000000000000
Backup in progress: False
Device name: Aidan's iPhone
Backup display name: Aidan's iPhone
Backup date: 02/07/2019 11:33:41
Backup size: 104258399691 bytes
Backup encrypted: True
Product version: 12.3.1
Product type: iPhone11,6
Serial number: FK1XH•••KPH6
Phone Number: +44 •••• ••••••
ICCID: 894411••••••••••••5
MEID: 35728209••••••
iOS デバイスの UDID は一意ですが、アーカイブされたバックアップがある場合など、お使いのコンピュータにそのデバイスのバックアップが複数存在することがあります。たとえば次のような場合です。
$ rictl backup search -l | grep B919
DB72CB76A00CB81675F19907D4AC2B298628D83C 09/06/2014 13:57:08 7.1.1 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup1
DB72CB76A00CB81675F19907D4AC2B298628D83C 23/07/2014 12:37:55 8.0 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup2
DB72CB76A00CB81675F19907D4AC2B298628D83C 28/07/2014 12:43:56 8.0 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup3
$ rictl backup info -u DB72CB76A00CB81675F19907D4AC2B298628D83C
Multiple backups found with UDID DB72CB76A00CB81675F19907D4AC2B298628D83C. Use the '--search-path' option to specify the backup's location. This can be shown with the '-l' argument on 'rictl backup search'.
解決策は、バックアップのフォルダを 含む フォルダではなく、バックアップが入っているフォルダそのものを指定して、検索パスを絞り込むことです。
$ rictl backup info -s /Users/afit/Library/Application Support/MobileSync/Backup/backup3 -u DB72CB76A00CB81675F19907D4AC2B298628D83C
UDID: DB72CB76A00CB81675F19907D4AC2B298628D83C
Path: /Users/afit/Library/Application Support/MobileSync/Backup/backup3
Backup in progress: False
Device name: Aidan's iPhone
Backup display name: Aidan's iPhone
Backup date: 28/07/2014 12:43:56
Backup size: 239001214 bytes
Product version: 8.0
Product type: iPhone6,2
Serial number: C7KNG•••G5MV
Phone Number: +44 •••• ••••••
ICCID: 894411••••••••••••5
MEID: 35728209••••••
バックアップを指定するとき、`-u` のほうが `-s` より速いのはなぜですか?
-u でバックアップを選択すると、-s を使う場合よりかなり速いことがあります。
こちらは速いです。
$ rictl backup extract -u 00000000-0000000000000000
こちらは遅くなります。
$ rictl backup extract -u 00000000-0000000000000000 -s "My backups"
この 2 つのコマンドでは、実行される処理がまったく異なります。-u コマンドは、デフォルトの検索場所 (および iPhone Backup Extractor で事前に設定された検索パス) からバックアップを取得します。一方、-s は、バックアップを含むフォルダとバックアップのフォルダそのもののどちらを指定した可能性もあるため、指定したパスの 1 階層下まで検索します。
バックアップには多くのサブフォルダが含まれていることが多いため、-s がバックアップの中にバックアップが入れ子になっていないかを確認する際 (実際にそうしたケースがありました) には、少し時間がかかることがあります。
list を使って iOS バックアップ内のファイルを一覧表示する
$ rictl help backup list
Usage: rictl backup list [args]
List files in a backup
Available arguments:
-u, --udid=VALUE backup UIUD
-s, --search-path=VALUE path to search for backups (two directories deep)
-p, --password=VALUE backup password
-l use a long listing format
-r, --pattern=VALUE file pattern (regex)
--allow-in-progress allow use of in-progress backups
-h, --help show this message and exit
実際に試してみましょう。
$ rictl backup list -u 00000000-0000000000000000 -r plist$ -l
rw-r--r-- 321 24/06/2019 13:04:37 ManagedPreferencesDomain\mobile\.GlobalPreferences.plist
rw------- 16975 21/06/2019 14:52:54 AppDomainPlugin-com.apple.stocks.widget\Library\Preferences\com.apple.stocks.widget.plist
rw-r--r-- 219 01/07/2019 09:37:24 HomeDomain\Library\UserNotifications\A4CCFF5B-F963-425F-8068-729972F77C67\DeliveredNotifications.plist
...
extract を使って iOS バックアップからファイルを抽出する
$ rictl help backup extract
Usage: rictl backup extract [args]
Extract files from a backup
Available arguments:
-u, --udid=VALUE backup UIUD
-s, --search-path=VALUE path to search for backups (two directories deep)
-p, --password=VALUE backup password
-o, --output-path=VALUE path to extract files to
-r, --pattern=VALUE file pattern (regex)
--allow-in-progress allow use of in-progress backups
-h, --help show this message and exit
バックアップからすべての .db ファイルを Extracted という名前のフォルダに抽出し、バックアップのパスワードとして password を指定してみましょう。
$ rictl backup extract -u 00000000-0000000000000000 -r "\.db" -o "Extracted" -p "password"
Extracting HomeDomain/Library/Voicemail/voicemail.db
Extracting HomeDomain/Library/Safari/Bookmarks.db
Extracting RootDomain/Library/Caches/locationd/consolidated.db
Extracting WirelessDomain/Library/CallHistory/call_history.db
...
export を使って iOS バックアップからデータをエクスポートする
$ rictl help backup export
Usage: rictl backup export [args]
Export data from a backup
Available arguments:
-u, --udid=VALUE backup UIUD
-s, --search-path=VALUE path to search for backups (two directories deep)
-p, --password=VALUE backup password
-t, --type=VALUE data type (messages, whatsapp, viber, kik, wechat,
line, hike, tinder, photos, videos, recordings,
contacts, calendar, notes, calls, locations,
voicemail)
-o, --output-path=VALUE associated file output path
-r, --pattern=VALUE search pattern (regex)
-f, --force allow overwriting exising files
--allow-in-progress allow use of in-progress backups
-h, --help show this message and exit
エクスポートされたデータは、ricloud API と同じ JSON 形式で提供されます。この形式については こちらに記載しています。
バックアップからすべてのメッセージデータを抽出してみましょう。このデータはコンソールの 標準出力ストリーム (stdout) に返されるため、messages.json という名前のファイルにリダイレクトします。関連するファイルは Associated files という名前のフォルダに保存し、バックアップのパスワードとして password を指定します。
$ rictl backup export -u 00000000-0000000000000000 -t messages -o "Associated files" -p "password" > messages.json
...
$ cat messages.json
[
{
"From": "789789",
"To": "Me",
"Date": "2012-12-17T14:12:30Z",
"Deleted": false,
"Message": "All done! You're now on our Big Data Texts Tariff. We switched you over on 17/12/12",
"Attachments": []
},
{
"From": "789789",
"To": "Me",
"Date": "2012-12-17T18:12:50Z",
"Deleted": false,
"Message": "You have 300 Texts and Unlimited data",
"Attachments": []
},
...
デバイスを操作する
$ rictl help device
Usage: rictl device <command> [args]
Work with devices over USB and Wi-Fi
Available commands:
search Show connected devices over USB and Wi-Fi
backup Backup a connected device
restart Restart a connected device
shutdown Shutdown a connected device
Use 'rictl help device <command>' for detailed help on a particular device command
デバイスを操作する際のオプションは、search、backup、restart、shutdown の 4 つです。
rictl をパスに追加する
iPhone Backup Extractor は、Preferences ペインを使って、Windows または macOS コンピュータのパスに rictl を自動的に追加できます。これにより、コンピュータ上のどのターミナルからでも簡単に使えるようになります。

iPhone Backup Extractor の「スクリプト」環境設定ペイン
パスを自分で設定したり、alias コマンドを使ったりすることもできます。ラッパースクリプトが示すように、rictl の機能は iPhone Backup Extractor のバイナリを通じて利用します。
$ cat `which rictl`
#!/bin/bash
/Applications/iPhone\ Backup\ Extractor.app/Contents/MacOS/iPhoneBackupExtractor cli "$@"
ファイル検索でよく使う正規表現パターン
- テキスト
plistで終わるパスを検索する:-r plist$ - 拡張子が
.dbのパスを検索する:-r \.db
企業での利用
rictl の機能は、おおむね iPhone Backup Extractor に準じています。このツールはバックアップの確認であれば制限なく操作できますが、実行のたびに抽出できるファイルは最大 4 つ、エクスポートできるデータは最大 4 件までです。
このテクノロジーがどのように活用されているかをぜひお聞かせください。当社は、このテクノロジーをベースに社内の管理ツールやコンプライアンスツール、製品を構築している多くの企業をサポートしています。お役に立てそうな場合は、お問い合わせ ください。
