nearproの日記

特に意味はありません。主に読んだ本をただただ記録します。

LINEのトーク履歴を(脱獄せずに)新しいiPhoneに引き継ぐ

iPhone 5からiPhone 6Sに機種変した人が、LINEのトーク履歴を引き継ぎできずに困っていたのでLINEのトーク履歴を移行した話をメモ代わりに残しておきます。

ネットで検索するとiCloudを使う方法やiTunesのバックアップで出来るよ!っていう記事が散見されるんですが、そもそもiCloudの容量足りないよって人や、やっぱり上手く行かなかったよ!って人がいるかもしれないので。(というか、今回そうだった)

状況

  • iPhone 5からiPhone 6Sに機種変更をした。
  • iPhone 6SでLINEを新しく起動したらトーク履歴が全部消えた。
  • iPhone 5機内モード(ネットワークから遮断)にしてLINEを開くとトーク履歴が残っていた。
    • しかし、そいつも数時間後にはネットワークに繋げボケとLINEに怒られて見れなくなった。
      (このあたりは携帯落とした人に見られないようにするためでしょう)
  • iPhoneのOSは共にiOS 9.1
  • LINEのバージョンも多分同じ or メジャーアップデートはなかった(この辺は結果からの推測)
  • 業務にも利用しているためjailbreakはなるべくやりたくない

さて、新しいiPhoneにこの状況でトーク履歴を移行しましょう!というのが今回のお話。 最近のiOSはSandboxにアクセス出来ないようになっているのでiFunboxなどでは端末を書き換えれない。ただ、バックアップならどうにでも触れるようなので今回はそこから復元を試みた。

流れ

  1. 無駄な事故が起きないように、端末を機内モードにしておく。(バックアップの為にiPhoneを探すもオフにする)
  2. 古い端末のバックアップをiTunes経由で行う(暗号化せずに。しても出来るかもしれないがしないほうが楽)
  3. iBackupBotをインストールする
  4. 古い端末のバックアップをiBackupBotで開いて、LINEのトーク履歴(+諸々他のデータも含んでる)のsqlite3のDBファイルをエクスポートする
  5. 新しい端末のバックアップをiTunes経由で行う(暗号化してはだめ)
  6. iBackupBotで新しい端末のバックアップのLINEのトーク履歴をインポートする。
  7. 書き換えたバックアップデータを復元する

作業

1.古い端末のバックアップ

これは説明があまり要らないかと思うので割愛。暗号化しないほうが早いしiBackupBotも安定するので暗号化しなくて良い。してもExportはできるらしい。

f:id:nearpro:20151029171100j:plain

2. iBackupBotのインストール

下記URLから自分のOSにあったiBackupBotをダウンロードして、インストールする。(iCopyBotではない) http://www.icopybot.com/download.htm

3.古い端末のトーク履歴ファイルをエクスポート

iBackupBotを起動してバックアップからトーク履歴を探します。候補としては

  • root > User App Files > LINE > Documents の中のtalk.sqlite
  • root > App Group Files > com.linecorp.line > Library > Application Support > Messages の中の Line.sqlite

の2つ。

※2015年11月11日追記 Line.ad.sqliteというファイル名になっている可能性もあるそうです。

検索などでは前者の情報がほとんどですが、最近は後者になっているのかもしれません。今回も後者の場所にありました。 なお、前者があるDocuments内にはやり取りした画像データなんかも入っているようなので丸ごとエクスポートすると良いかもしれません。(今回はトーク履歴が復活すればOKだったので試してません)

f:id:nearpro:20151029171918j:plain

なお、このsqliteファイルにはトーク履歴の他にコンタクトなどのデータが丸ごと入っていました。軽く覗きながら解析した情報は後日また纏めます。

4. 新しい端末のバックアップ

新しいiPhone(LINEをインストールしてトーク履歴が消えた状態)も同様にiTunes経由でバックアップ。これは暗号化してはいけません。暗号化するとiBackupBotでファイルのインポートが出来なくなります。

※2015年11月10日追記 iBackupBotでリストアできない場合もあるそうです。その場合はiTunesからリストアしても上手く行くとのこと

他に特に注意する点はありませんが、最近のiPhoneは容量が大きいので写真や動画がたくさん入ってると作業してるPCの空き容量が足りなくなるという事態になるかもしれません。(特に、新しい端末にすでに古い端末のデータを引き継いだ状態だと)

古い端末のバックアップはLine.sqliteを除いて不要なので、丸ごと消してしまっても良いです。不安であれば、外付けなどに退避させましょう。

バックアップの場所は下記の通り。iPhoneの固有番号はiTunesのバックアップの上に書いてあります。

iTunes バックアップを探して管理する - Apple サポート

Win: C:\ユーザー(ユーザ名)\AppData\Roaming\Apple Computer\MobileSync\Backup[iPhoneの固有番号]

Mac: ~/Library/Application Support/MobileSync/Backup/[iPhoneの固有番号]

5.旧トーク履歴を新しい端末のバックアップにマージ

再びiBackupBotを立ち上げます。先ほど、古い端末でトーク履歴を拾った場所に移動すると、恐らく同じファイルが存在していると思います。

そこに先ほど取り出した同名のファイルを上書きします。暗号化していないバックアップの場合、iBackupBotのImportボタンで出来ます。もし、shm,walファイルがある場合はそいつはSQLiteのロックファイルなので削除してしまいましょう。

6. 復元する

iTunes経由の復元でも可能かもしれませんが、今回はそのままiBackupBotからリストアを行いました。

左パネルのフォルダ上で右クリックするとコンテキストメニューに「Restore to device」と表示されるのでそれを押します。(たまにグレーアウトしてますが、何度か選択し直すと押せるようになりました)

f:id:nearpro:20151029173650j:plain

ダイアログで聞かれますが、基本的にそのままでOKだと思います。なお、Full Restore/Partical Restoreを選択させられますが、今回は怖いのでFullで復元しました。部分リストアでも普通に直るかもしれませんが、試していないので試して上手くいったよ!って人がいれば教えて下さい。

f:id:nearpro:20151029173936j:plain

絶望からの希望

上記行程を経て、復元した新しいiPhoneを起動します。暗号化していないバックアップからの復元のためiCloudなどのパスワードは基本的に入力し直します。フルリストアであれば簡単な初期設定もあると思いますが適当に流しましょう。

恐る恐るLINEを開くと、そこには見覚えのある景色が!!!まさに僥倖!!

最後に

上記方法で、うまく引き継げた!と思いますが、使ってるうちに不都合があるかもしれません。実行する場合は自己責任でおねがいします。

最後に、これを言っては元も子もないですが、会社員時代、情シス部門に居た私は強く言います。

LINEで業務連絡や重要な連絡をするんじゃねーよ!!!!

補足

そもそも、この方法で移行できると思っていなかったので、Line.sqliteを解析してビューワを書こうとしていました。 その過程で得たLine.sqliteのテーブル構造やデータ構造の知見は後日まとめます。パケットキャプチャまでして、スタンプやアイコン画像の場所も探しました…。全て徒労でしたが。

そんなこと止めてくれ!っていうLINEの人が居たら、言って下さい。雇用して下さい。