ADBを介したAndroidの設定とアプリケーションのバックアップと復元


30

ADBを介してすべてのAndroid設定とアプリケーションをバックアップおよび復元できるかどうかを確認したいと思います。

私は試した:

adb backup -all
adb: unable to connect for backup

他のすべてのコマンドは機能していますが、機能していません。

このbmgrを使用することは可能ですか?


私はwin7-64でadb 1.0.29を使用していますがadb: unable to open file ./backup.ab、実行時にエラーが発生しますadb backup -all。ないadb devicesあなたのアンドロイドを見つけますか?
k3b

はい、デバイスIDを確認できます。

コマンドラインでmultipeパッケージ名を送信すると、同様の問題が発生しました。問題は、バックアップするパッケージの数が長すぎることです(です)。複数のコマンドコールに分割する必要がありました
Romuald Brunet

回答:


9

デバッグが有効になっていて、デバイスが接続されていることを確認してください。また、デバイス自体の「データのバックアップ」ボタンを実際に選択することを忘れないでください(デバイスには確認が必要です)。デバイスにこのような画面が表示されない場合は、ICSより前(4.0より前)の電話を実行している可能性が高く、残念ながらこの機能はありません。

また、これbmgrは解決策ではありません-デバイスに砲撃するのではなく、アプリケーションのバックアップエージェントで「backup」および「restore」メソッドを手動で起動することにより、バックアップAPIを使用して独自のバックアップを処理するアプリをテストするためのツールです開発マシンとの間でデータをコピーします。


うん-私にとって、問題は私の携帯電話のAndroid 4.0以前の古いバージョンでした。ありがとう!
nealmcb

これには実際に設定/データが含まれていますか?
誰も

7

物事をバックアップするための私のコマンドはここにあります

./adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir sav\/\1; .\/adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/.\/adb pull \/\1 sav\/\1/' | /bin/bash
  1. すべてのファイルをリストする
  2. リンクを無視
  3. ために
    • files:adb pullコマンドを出力します
    • ディレクトリ:dirを作成し(sthが空の場合)、adb pullコマンドを出力します
  4. すべてをbashで実行する

許可が拒否されるファイルがいくつかありますが、デバイスをルート化するためにこのバックアップが作成されるため、これ以上許可を取得できません:(


1
これは確かに、古いAndroid(この場合はGingerbread 2.3.3)でさえ、すべてのファイル(「許可拒否」ビットを除く)をバックアップするように見えます。私はこのバリアントを使用します(エラーメッセージを回避するために-pparamを追加し、の前でmkdir削除し./ました./adb):time adb shell ls -l -a | grep '^[^l]' | sed -e 's/^d.* \([^ ]*\)\r$/mkdir -p sav\/\1; adb pull \/\1 sav\/\1/' -e 's/-.* \([^ ]*\)\r$/adb pull \/\1 sav\/\1/' | /bin/bash
StéphaneGourichon 13年

3
派手な正規表現を必要とせずに、すべてのファイルの再帰バックアップを行うはるかに簡単な方法は、「adb pull /」です。
JC Hulce

5

私があなたを正しく理解していれば、このリンクはあなたが探しているものかもしれません。要約する:

1)実行adb devicesして、デバイスが接続されていることを確認します。

2)実行adb pull /data/app ./してすべてのアプリAPKを取得し、現在のフォルダーに配置します。
a)または、実行adb pull /system/sd/app ./してSDカード上のアプリを取得します。

3)設定はさまざまな場所にあるため、どこを見つけて同じadb pullコマンドを使用して設定を取得します。

そして、リンクはMacまたはWindowsに基づいて復元する方法を詳しく説明します。

または、bmgr言及したコマンドは、いくつかの単純なコマンド(adb shell bmgr backup <package>バックアップおよびadb shell bmgr restore <package>復元)でも機能するようです。さらに何をお探しですか?


1
アレクサンダールーカスが以下の回答で述べているように、このbmgrコマンドは、開発者がアプリのバックアップ/復元をテストするためのツールです。実際にデバイスからデータをコピーすることはありませんので、有用ではないでしょう。
-PT

Gingerbreadデバイスを使用したadb 1.0.30では機能しません。pull: building file list... 0 files pulled. 0 files skipped.
StéphaneGourichon 13年

あなたのadb pullプライベートなアプリデータの非根ざしデバイス上の意志ではない作品。そして、bmgr制御ゴーグルは、バックアップクラウドのためだけである
Murmel

2

問題はおそらく、複数のデバイス/エミュレーターが接続されているためです。

チェックadb devicesそれは複数のデバイスを示している場合、接続できないことがありますspecialy to emulators

走る adb usbそれをすると、他のデバイスが再起動し、USBケーブルを切断/再接続します。

adb devices

1つのデバイスのみが表示されます。

今やる

adb backup -all

そして、あなたは行くのが良いはずです:)


Android用のターミナルエミュレータを介してローカルでコマンドを使用する場合はどうすればよいですか?
user2284570

2

SDKアップデートを実行し、Google USBドライバーのチェックボックスをオンにして、SDKをアップデートしてください。

デバイスでUSBデバッグを有効にしてPCに接続すると、ドライバーのインストールに関するプロンプトが表示されます。デバイスマネージャーが正常に開いて電話が見つかった場合でも、ドライバーを右クリックして更新し、ドライバーをGoogle USBドライバーフォルダーにポイントしますSDK > Extras > Google USB、ドライバーを更新します。

その後、デバイスから完全バックアップを取得できるはずです。


これにより、問題が解決しました。ドライバーは問題ではありませんでしたが、ADBバージョン自体は古すぎました。
AJヘンダーソン

1

バックアップに必要なGS4があり、残念ながらこのエラーに遭遇しました。少し頭をひっかいて(そして宣誓して)私はあなたのために働くことを望んでいる修正を見つけました。abdヘルプドキュメントを実行してスクロールするだけで、これを見つけることができました。それ-dは「接続されている唯一のUSBデバイスにコマンドを送信する」パラメーターであることがわかりました。だからプラグを差し込んだ後、私はそれが私のために働くようになりました。私が使用したコマンドは次のとおりです。

adb -d backup -apk -shared -all -f C:\Users\NAME\backup.ab

これが私と同じ問題を抱えている人に役立つことを願っています。


0

私は同じ問題を抱えており、ICS以前でもあります。私がそれを回避するために行ったのは、ls /とawk(リンクをスキップするgrepを使用)を使用して、実際の各ディレクトリをPCのディレクトリにプルするバッチファイルを作成することでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.