iCloudにバックアップするには5GBを超えると年2万円以上かかってしまうので、別方法を考えてみました。 デスクトップPCでuBuntuを使っているので色々検討してみました。 まだ実行していませんが備忘録で残しておきます。
一番いいのは以下の通りと思います。
iCloudでバックアップ
uBuntuにはバックアップ取れない情報があります。 これらはiPhoneを買い替えたりしたときに自動的に普及してくれます。 これらはiCloudにバックアップしなければなりません。
データの種類 | 保存理由 |
アプリのデータ | アプリごとの設定やセーブデータなど、デバイス固有の情報を保持します。 |
ホーム画面のレイアウト | アプリの配置やフォルダの構成など、ホーム画面の状態を記憶します。 |
デバイス設定 | ネットワーク設定、通知設定、Touch ID/Face IDの設定など。 |
iMessage/SMS | テキストメッセージの履歴。iCloudに保存されます。 |
Apple Watchのバックアップ | Apple Watchのペアリング情報や設定。 |
連絡先とカレンダーは、他のデバイスでも保存出来るのですが、これらを入れて5GBを超えることはめったに無いのでiCloudに入れます。
連絡先 | 基本情報: 名前、会社名、電話番号、メールアドレス 住所情報: 住所、地図情報 誕生日・記念日: 連絡先に登録された誕生日や記念日 ソーシャルメディア情報: TwitterやFacebookなどのアカウント情報 メモ: 連絡先に関連する個人的なメモ 写真: 連絡先の顔写真 |
カレンダー | イベント名: 予定のタイトル 日時: 予定の開始日時と終了日時 場所: 予定の場所(住所や施設名)、地図情報 参加者: 予定に招待された人々の連絡先 アラート: 予定の開始前に通知を送る設定 繰り返しの設定: 毎週、毎月など、定期的な予定の設定 メモ: イベントに関連する個人的なメモ |
それ以外のデータ
写真と動画 | 容量を最も圧迫するデータです。Googleフォトに自動同期できます。 |
ダウンロードしたファイル | 「ファイル」アプリ内のPDFやドキュメントなど。 |
ドキュメント | Pages、Numbers、Keynoteなどのドキュメント。Google ドキュメントやスプレッドシートに移行できます。 |
音楽 | ダウンロードした音楽ファイルやライブラリは、Google Driveなどのクラウドストレージに保存できます。 |
ボイスメモ | 録音した音声ファイル。 |
バックアップ手順
libimobiledevice は、iPhone、iPad、iPod TouchなどのiOSデバイスと、Linuxを含むUnix系OSとの間で通信するためのクロスプラットフォームなライブラリです。Appleの非公式なプロトコルをリバースエンジニアリングして開発されており、多くのサードパーティ製ツールがこれを基盤としています。
このライブラリ群に含まれる主要なツールは以下の通りです。
- usbmuxd: PCとiOSデバイス間のUSB通信を多重化するためのデーモン。これがないと、他のツールは動作しません。
- libimobiledevice: 基礎となるライブラリ。
- ifuse: これがあなたの目的に最も直接的に役立つツールです。 これを使うと、iPhoneのファイルシステムをUbuntu上のディレクトリに**マウント(接続)**することができます。これにより、iPhoneがまるでUSBメモリのように扱えるようになり、ファイルマネージャーやシェルスクリプトから簡単にアクセスできるようになります。
ifuse を使ったバックアップの自動化
以前ご説明したrsync
スクリプトと組み合わせることで、以下のワークフローで自動バックアップを実現できます。
ステップ1:必要なソフトウェアをインストールする
以下のコマンドをUbuntuのターミナルで実行し、libimobiledevice
とifuse
をインストールします。
Bash
sudo apt update
sudo apt install libimobiledevice-utils ifuse
ステップ2:iPhoneをマウントする
iPhoneをUSBケーブルでPCに接続し、デバイス上でPCを「信頼」します。その後、以下のコマンドを実行して、iPhoneのファイルシステムをマウントします。
Bash
mkdir -p ~/iphone_mount
ifuse ~/iphone_mount
これで、~/iphone_mount
というディレクトリに、iPhoneのカメラロールや「ファイル」アプリのデータがマウントされます。
ステップ3:rsyncスクリプトでバックアップする
マウントが完了すれば、以下のrsync
スクリプトを実行。スクリプトのSOURCE_DIR
を~/iphone_mount/
に設定すれば、自動的にデータをSSDにコピーできます。
- 写真と動画は
~/iphone_mount/DCIM
にあります。 - 「ファイル」アプリに保存したドキュメントは、
~/iphone_mount/Documents
など、アプリのフォルダ内にあります。
# バックアップ元のディレクトリ
# iPhoneから手動でデータをコピーする一時フォルダを指定します。
# 例: /home/your_username/temporary_iphone_files/
SOURCE_DIR="/home/your_username/temporary_iphone_files/"
# バックアップ先のディレクトリ
# Ubuntuに接続したSSDのバックアップフォルダを指定します。
# 例: /media/your_username/your_ssd_label/iPhone_Backup/
DEST_DIR="/media/your_username/your_ssd_label/iPhone_Backup/"
# メイン処理
# バックアップ元のディレクトリが存在するか確認
# 存在しない場合はエラーメッセージを表示して終了します。
if [ ! -d "$SOURCE_DIR" ]; then
echo "エラー: バックアップ元ディレクトリ '$SOURCE_DIR' が見つかりません。"
exit 1
fi
# バックアップ先のディレクトリが存在しない場合は作成
if [ ! -d "$DEST_DIR" ]; then
echo "バックアップ先ディレクトリ '$DEST_DIR' を作成します..."
mkdir -p "$DEST_DIR"
fi
# rsyncコマンドでバックアップを実行
# -a (--archive): アーカイブモード。ファイルのパーミッション、タイムスタンプ、所有者情報を保持します。
# -v (--verbose): 処理中の詳細情報を表示します。
# --delete: バックアップ元で削除されたファイルを、バックアップ先からも削除します。
# これにより、SSDのバックアップが常に最新の状態になります。
echo "バックアップを開始します..."
rsync -av --delete "$SOURCE_DIR" "$DEST_DIR"
echo "=========================================="
echo "バックアップが完了しました。"
echo "完了日時: $(date)"
echo "=========================================="
# 実行ログをファイルに追記
echo "バックアップが完了しました。日時: $(date)" >> /home/your_username/backup_log.
ステップ4:アンマウントする
バックアップが完了したら、以下のコマンドで安全にアンマウントします。
Bash
fusermount -u ~/iphone_mount
この方法であれば、iPhoneをPCに接続してマウントする作業は手動ですが、その後のバックアップはrsync
スクリプトで自動化でき、非常に効率的です。
iPhone 14以前: USB 3.0ポートに接続しても、バックアップ時間は1時間程度。
iPhone 15 Pro/Pro Max: USB 3.0ポートに接続すれば、15分以内でバックアップが完了します。
iCloudの設定変更
ステップ1:iCloudストレージの管理画面を開く
- iPhoneの**「設定」**アプリを開きます。
- 画面上部にある**自分の名前(Apple ID)**をタップします。
- **「iCloud」**をタップします。
- **「アカウントのストレージを管理」または「ストレージを管理」**をタップします。
ステップ2:バックアップ対象から外す
この画面で、iCloudにデータを保存しているすべてのアプリとサービスを確認できます。
- 写真と動画
- iCloud Photos(iCloud写真)をオフにすると、写真や動画はiPhoneにのみ保存されます。これにより、iCloudの容量を最も大きく節約できます。
- 音楽、ボイスメモ、ドキュメントなど
- これらのデータは、特定のアプリ(例:ミュージック、ボイスメモ、ファイル)に関連付けられています。iCloudに保存したくない場合は、各アプリの設定でiCloud同期をオフにするか、アプリのバックアップ設定から除外します。
iPhone
└─ private/var/mobile
├─ Media
│ ├─ DCIM/ ←【写真・動画】カメラロール(USB接続で見えるのは基本ここ)
│ │ ├─ 100APPLE/ ← 画像/動画ファイル(JPEG/HEIC/PNG/MP4/HEVC)
│ │ └─ 10xAPPLE/ ...
│ ├─ PhotoData/ ← 写真ライブラリDB等(直接操作不可)
│ ├─ Recordings/ ←【ボイスメモ】.m4a など
│ ├─ iTunes_Control/
│ │ └─ Music/ ←【音楽】Apple Music/同期曲(F00〜Fxxフォルダに分散)
│ ├─ Books/ ← Apple Books 関連
│ ├─ Downloads/ ←【ダウンロード】Safariで「iPhone内に保存」を選んだ場合の既定先
│ └─ Mobile Documents/ ←【iCloud Drive】(Filesの「iCloud Drive」に相当)
│
└─ Containers/
└─ Data/
└─ Application/
└─ <各アプリUUID>/
├─ Documents/ ←【ドキュメント】各アプリの“オンマイiPhone”内の実体
├─ Library/
└─ tmp/
SSDの2重化
RAID1かRAID5を使ったほうがいいと思います。 H670ボードで使う場合はBIOS設定が必要。
RAIDを使わず、2つのSSDにバックアップを撮るには、以下ミラーリングスクリプトで可能になります。
# ==============================================================================
# 設定変数
# ==============================================================================
# バックアップ元のディレクトリ (1台目のSSD)
# 既にrsyncでiPhoneからバックアップしているSSDのパスを指定します。
# 例: /media/your_username/your_ssd_label/iPhone_Backup/
SOURCE_DIR="/media/your_username/your_ssd_label/iPhone_Backup/"
# バックアップ先のディレクトリ (2台目のSSD)
# こちらに1台目のSSDのデータをミラーリングします。
# 例: /media/your_username/your_2nd_ssd_label/iPhone_Backup/
DEST_DIR="/media/your_username/your_2nd_ssd_label/iPhone_Backup/"
# ==============================================================================
# メイン処理
# ==============================================================================
# バックアップ元ディレクトリの存在確認
if [ ! -d "$SOURCE_DIR" ]; then
echo "エラー: バックアップ元ディレクトリ '$SOURCE_DIR' が見つかりません。"
exit 1
fi
# バックアップ先ディレクトリが存在しない場合は作成
if [ ! -d "$DEST_DIR" ]; then
echo "バックアップ先ディレクトリ '$DEST_DIR' を作成します..."
mkdir -p "$DEST_DIR"
fi
# rsyncコマンドでミラーリングを実行
# -a (--archive): アーカイブモードで、属性(パーミッション、タイムスタンプなど)を保持してコピー
# -v (--verbose): 処理中の詳細情報を表示
# --delete: バックアップ元にないファイルをバックアップ先からも削除し、完全なミラーリングを実現
echo "バックアップ元SSDのデータを2台目のSSDに同期します..."
rsync -av --delete "$SOURCE_DIR" "$DEST_DIR"
echo "=========================================="
echo "2台目のSSDへの同期が完了しました。"
echo "完了日時: $(date)"
echo "=========================================="
# 実行ログをファイルに追記
echo "2台目のSSDへの同期が完了しました。日時: $(date)" >> /home/your_username/backup_log.txt
コメント