Führt man Datensicherungen von seinen iOS-Geräten (iPhone, iPad, iPod touch) mit iTunes auf seinem Mac durch (etwa weil man der »Cloud« nicht traut), so werden die Geräte-Backups in der Library des Home-Ordners des Nutzers abgelegt, in Unterverzeichnissen unter ~/Library/Application Support/MobileSync/Backup/ (Leerzeichen in Application Support beachten).

Speichert man die Datensicherungen verschlüsselt ab, so werden auch Kennwörter (zum Beispiel für WLAN, E-Mail-Konten, usw.) mit gesichert und man muß diese nach einer Wiederherstellung aus dem Backup nicht wieder manuell eingeben.

iTunes

In iTunes findet man eine Übersicht der vorliegenden iOS-Datensicherungen unter Preferences → Devices. In jeder Zeile links den Gerätenamen, dann gegebenenfalls ein Schloß-Symbol, wenn das Backup verschlüsselt ist, und rechts das Datum der letzten Sicherung. Zeigt man mit dem Mauszeiger auf eine Zeile, so werden weitere Informationen wie Gerätemodell, dessen iOS-Softwareversion und Seriennummer in einem Tooltip aufgeführt. Über einen Rechtsklick auf den Backup-Namen und Show in Finder kann man sich die Dateien im Dateimanager anzeigen lassen. Nach Auswahl eines Backups kann man es in iTunes auch direkt löschen.

Datensicherungs-Übersicht in iTunes-Einstellungen.

Hat man viele iOS-Geräte und/oder speichern die viele Daten, so kann das Backup-Verzeichnis sehr groß werden – schnell zu groß für die speicherknappen SSDs in den heutigen mobilen und kleinen Macs von Apple. Deshalb möchte man die iOS-Datensicherungen wahrscheinlich auf andere (Speicher-)Systeme wie externe Festplatten, NAS (Network Attached Storage) oder Heim-/Backup-Server verschieben. Vielleicht auch, weil ein früheres Backup eines iOS-Geräts von iTunes durch die aktuelle Datensicherung überschreiben wird.

Zum Wiederherstellen muß man die Backup-Verzeichnisse aber zuerst wieder unverändert an ihren angestammten Platz auf den Mac zurückkopieren.

Kommandozeile

Ist man viel auf der Kommandozeile (Shell, im Terminal) unterwegs, wird man lieber dort direkt, ohne den Umweg über iTunes und Finder, wissen wollen, welche der kryptischen Verzeichnisnamen in ~/Library/Application Support/MobileSync/Backup/ zu welchem Backup gehören. Im jeweiligen Unterverzeichnis gibt es eine XML-Datei Info.plist, die nach <key>s in einem <string> die dazugehörigen Daten angibt. Keys sind zum Beispiel:

  • Build Version
  • Device Name
  • Display Name
  • GUID
  • ICCID
  • IMEI
  • Installed Applications
  • Last Backup Date
  • Phone Number
  • Product Name
  • Product Type
  • Product Version
  • Serial Number
  • Target Identifier

Der Target Identifier gibt die Backup-ID an; er entspricht dem Verzeichnisnamen, in dem die Datensicherung liegt.

Man könnte die Info.plist in einem Texteditor öffnen oder nach Schlüsseln mit grep wie beispielsweise in grep -A1 'Device Name' Info.plist suchen. Mac OS X (OS X, macOS) liefert aber mit PlistBuddy in /usr/libexec/ auch ein Programm zum Extrahieren der Daten aus der XML-Plist (Property List) mit. Zum Beispiel kann man

/usr/libexec/PlistBuddy -c "Print 'Device Name'" -c "Print 'Last Backup Date'" Info.plist

verwenden, um den Gerätenamen und das Datum der letzten Sicherung anzuzeigen – und weiß somit das aktuelle Backup-Verzeichnis besser zuzuordnen.

Shell-Script für Informationen zu allen MobileSync-Backups

Möchte man einen Überblick über alle mit iTunes durchgeführten Backups, könnte man ein Shell-Script wie dieses verwenden (und nach seinem Geschmack anpassen, etwa einige unnötige Keys aus dem Array löschen):

#!/usr/bin/env sh
##set -o errexit
set -o nounset

readonly directory="${HOME}"/Library/Application\ Support/MobileSync/Backup

declare -a keys=(
    "Target Identifier"
    "Build Version"
    "Device Name"
    "Display Name"
    "GUID"
    "ICCID"
    "IMEI"
    "Last Backup Date"
    "Phone Number"
    "Product Name"
    "Product Type"
    "Product Version"
    "Serial Number"
)

for file in "${directory}"/*/Info.plist; do
    if [ -f "${file}" ]; then
        #printf "%s\n" "${file}"
        for key in "${keys[@]}"; do
            value=$(/usr/libexec/PlistBuddy -c "Print \"${key}\"" "${file}" 2>/dev/null)
            status="$?"
            if [ "${status}" -eq 0 ]; then
                printf "%s: %s\n" "${key}" "${value}"
            fi
        done
        printf "\n"
    fi
done

Hat man die iOS-Backups auf einem anderen System als Mac OS X liegen und deshalb nicht PlistBuddy zur Verfügung, so könnte man wie beschrieben auch grep verwenden oder das entfernte Datensicherungsverzeichnis zum Beispiel mit sshfs (etwa im Paketmanager Homebrew vorhanden) auf einem Mac mounten und dort PlistBuddy verwenden.