Работа с iOS-устройствами и резервное копирование в командной строке
iPhone Backup Extractor включает в себя инструмент командной строки с именем rictl
для работы с резервными копиями и устройствами iOS. rictl
работает на любой платформе, на которой работает iPhone Backup Extractor, и работает как любой инструмент командной строки в стиле UNIX с точки зрения синтаксиса аргументов и справки, а также возвращает оболочку.
Особенности с первого взгляда:
- UNIX-совместимый формат (коды возврата оболочки
$?
, даты в формате локали, дружественный к awk вывод, потокиstdout
экспортируемых данных) - Поддержка нескольких одновременных путей поиска
- Поддержка всех форматов зашифрованного резервного копирования
- Поддержка относительных и домашних (
~
) путей
Быстрый старт: извлечение файлов базы данных из резервной копии 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
:
$ 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
exposes a backup
mode for working with local backups, and a device
mode for working with iOS devices over USB or Wi-Fi.
Работа с локальными резервными копиями
$ 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
.
Использование 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
Опция -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
можно использовать для указания папки резервного копирования или папки, содержащей резервные копии
Использование 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••••••
Конечно, хотя UDID
устройства iOS является уникальным, на вашем компьютере может быть несколько его резервных копий, например, если у вас есть архивная резервная копия, например:
$ 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••••••
Использование 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
Экспортируемые данные доступны в том же формате JSON, который использует ricloud API, и эти форматы описаны здесь .
Давайте извлечем все данные сообщения из резервной копии. Эти данные будут возвращены в стандартный поток вывода консоли ( 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
.
Добавление rictl
на ваш путь
iPhone Backup Extractor может автоматически добавить rictl
к пути вашего компьютера с Windows или macOS, используя панель « Preferences
, чтобы его можно было легко использовать в любом терминале на вашем компьютере.
Однако вы также можете установить путь самостоятельно или использовать команду alias
. rictl
к функциональности 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: этот инструмент разрешает неограниченную работу по исследованию резервных копий, но будет извлекать до четырех файлов или экспортировать четыре элемента данных за раз при каждом запуске.
Мы стремимся услышать о том, как эта технология используется, и поддержать ряд компаний, которые создали свои внутренние инструменты управления или соответствия требованиям или продукты на основе этой технологии. Пожалуйста, свяжитесь с нами, если это может быть полезным для вас.