Использование rictl для работы с резервными копиями в командной строке

обновленный

iPhone Backup Extractor включает в себя инструмент командной строки с именем rictl для работы с резервными копиями и устройствами iOS. rictl работает на любой платформе, на которой работает iPhone Backup Extractor, и работает как любой инструмент командной строки в стиле UNIX с точки зрения синтаксиса аргументов и справки, а также возвращает оболочку.

Особенности с первого взгляда:

  • UNIX-совместимый формат (коды возврата оболочки $? , даты в формате локали, дружественный к awk вывод, потоки stdout экспортируемых данных)
  • Поддержка нескольких одновременных путей поиска
  • Поддержка всех форматов зашифрованного резервного копирования
  • Поддержка относительных и домашних ( ~ ) путей

 klzzwxh:0002  shown in macOS Terminal
rictl показано в MacOS Terminal

 klzzwxh:0004  shown in Windows Command Prompt
rictl отображается в командной rictl Windows

Быстрый старт: извлечение файлов базы данных из резервной копии 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

Use 'rictl help <command>' for detailed help on a particular command

В настоящее время rictl предоставляет режим backup для работы с локальными резервными копиями.

Работа с локальными резервными копиями

$ 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

Показанные поля разделены пробелами и являются:

Опция -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 на ваш путь

iPhone Backup Extractor может автоматически добавить rictl к пути вашего компьютера с Windows или macOS, используя панель « Preferences , чтобы его можно было легко использовать в любом терминале на вашем компьютере.

iPhone Backup Extractor's "Scripting" preferences pane
Панель настроек сценариев iPhone Backup Extractor

Однако вы также можете установить путь самостоятельно или использовать команду 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: этот инструмент разрешает неограниченную работу для исследования резервных копий, но извлекает только четыре файла или экспортирует четыре элемента данных за раз при каждом запуске. Этого можно избежать, запустив инструмент несколько раз.

Мы стремимся услышать о том, как эта технология используется, и поддержать ряд компаний, которые создали свои внутренние инструменты управления или соответствия требованиям или продукты на основе этой технологии. Пожалуйста, свяжитесь с нами, если это может быть полезным для вас.

Как мы можем помочь?

Наша служба поддержки здесь, чтобы помочь!

Наш офис работает с понедельника по пятницу с 9:00 до 17:00 по Гринвичу. Время в настоящее время 2:00 ДП с GMT.

Мы стремимся отвечать на все сообщения в течение одного рабочего дня.

Перейти в раздел поддержки › Свяжитесь с нами ›
Наша отличная команда поддержки

Можем ли мы улучшить эту статью?

Нам нравится слышать от пользователей: почему бы не написать нам электронное письмо, оставить комментарий или написать в Твиттере @reincubate?

© 2008 - 2019 Reincubate Ltd. Все права защищены. Зарегистрировано в Англии и Уэльсе #5189175, VAT GB151788978. Reincubate® является зарегистрированным товарным знаком. Защита & Условия. Мы рекомендуем 2FA. Построен с в Лондоне.