AndroidをrsyncでPCやNASにバックアップ

投稿者: | 2020年11月19日

iPhoneと異なり、いまいちバックアップ手法に決め手が無いAndroid。私は初期の頃からrsyncを使った母艦PCやNASとの同期を愛用しているのですが、アプリの設定が面倒なのが最大のネック。しかし動いてしまえば、以後はワンクリックで同期出来るこの手法を機種変更時の備忘録としてまとめます。

rsync backup for Android

Androidのかなり初期から愛用してきたのが、こちらのrsync backup for androidというラッパーアプリ。

Google Play で手に入れよう
Android 7搭載の華為 Mate 9でも機能していたシンプルなアプリなので、ASUS ZenFone 7(Android 10)でも大丈夫と思っていたら、動きませんでした。アプリのインストールは問題なく終え、開くことも出来るのですが、実際にプロファイルを作って同期させても即終了に。元々作者さまによるメンテも途絶えて数年なので、改善を待つより代替アプリを探すことにします。

図1.rsync backup for Android機能不能

図1.rsync backup for Android機能不能

ちなみにこのとてもシンプルなアプリは、作成するプロファイルがほぼ手打ちになってしまうのが辛いところですが、プロファイルデータは、

に格納されているので、機種移行の際やもしもの時のバックアップにこのファイルを利用するのが便利。

尚、Android 7搭載の華為 Mate 9での動作の様子はこのようになります。動けばシンプルでサクサクです。

図2.rsync backup for Android実行例

図2.rsync backup for Android実行例

 

rsync Wrapper

代替としてまず見つかるのがこちら、名前の通りのrsyncのラッパーアプリです。

Google Play で手に入れよう早速インストールしてみると、rsync backup for android同様、シンプルなUIですが、ラッパーの向こうにいるのは同じrsyncなので、オプションパラメータはほぼ同じ要領で受け付けてくれます。

 

sshプロトコルでの鍵認証に使う鍵ペアは、rsync backup for Androidで使っていたのを引き継ぎます。どちらのアプリでもアプリ内に鍵ペアを生成する機能はあるのですが、近年はOpenSSHサーバ側の鍵の最低強度が厳しくなってきていることもあり、制約のあるAndroid上で作るより、ubuntu母艦上で生成、dropbear形式に変換して、Androidへ設置する方が確実です。

Ubuntu 18.04 母艦での作業、鍵は何度か作ったことがあるのですが、dropbearへの変換は初めてなので、dropbearをインストールします。

続いてssh-keygenでファイル名を指定して鍵ペアを作り、dropbearconvertを使って秘密鍵をdropbear形式に変換します。

ここまでの作業で以下の3つのファイルが生成されました。このうち、公開鍵についてはその末尾に追記されるユーザ名@ホスト名が当然のことながら、生成した母艦の情報となっているので、authorized_keyへappendする際に、誤解を招かぬよう適宜編集した方が良いかもしれません(この部分はいじっても特に認証へ影響無し)。

  • rsync.key     : 秘密鍵 → 破棄
  • rsync.key.pub : 公開鍵 → 母艦やNASのauthorized_keyへappend
  • rsync.key.db  : dropbear形式秘密鍵 → Android機へコピー

 

アプリを開き、内部ストレージ用に以下の要領でタスクを作ってみます。

オプションのうち、exclude-fromは処理に当たり除外する項目をテキストファイルに一括指定するもので、実際にはこのようになっています。

タスクが完成したらDRY RUNで期待通りの動作をするか、実際に同期されることなくログ上で確認します。問題無ければRUNで本実行させましょう。初回実行は転送量が多くなるのでかなり時間と負荷が掛かるので、WiFi電波環境の良いところで行いましょう。

図3.内部ストレージ用タスクの作成から実行まで図3.内部ストレージ用タスクの作成から実行まで

 タスクが1つ完成してしまえば、これを元に類似タスクを作ることが出来るので楽ちんです。外部ストレージ用のタスクや別のNASへの同期タスクも作りました。

図4.既存のタスクをコピー編集して利用

図4.既存のタスクをコピー編集して利用

 ここまでAndroidからPC母艦・NASへのバックアップ同期を組んでみましたが、rsyncなのでその逆、レストア動作も当然可能です。とは言え、ストレージ丸ごとレストアさせるのは怖いので、適当なフォルダ単位にしてみました。

図5.母艦からフォルダ指定でレストアするタスクの例

図5.母艦からフォルダ指定でレストアするタスクの例

Android側に復元されたファイルを見ても、タイムスタンプがしっかり維持されたままの復元となっていて期待通りです。普段は誤って押しても実行されないよう、敢えて無効なオプションを付与してタスクを保存しておきます。

 

最後に、root権限より/data配下を丸ごとバックアップ出来るか試してみました。タスクを作る前にPreferencesを開いて、Running as rootを有効にします。そして既存のタスクをベースに、Sourceを/data/とし、Destinationを母艦の適当な場所に用意して実行してみます。

図6.root権限でdata直下まるごとバックアップ

図6.root権限でdata直下まるごとバックアップ

 

以上、rsyncをラッパーアプリ経由で利用するバックアップを解説してみました。動かすまでの過程でrsyncやssh認証に関する理解が必要なものの、普段はWiFi経由でアプリを数回タップするだけでバックアップ出来てしまうことや、バックアップ先に特別なアプリを必要とせず、Linux系では普遍的なsshサーバさえあれば良いところは、自分にとっては定番のソリューションです。

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA