web-dev-qa-db-ja.com

ADBバックアップが機能しない

私はadbバックアップで何が間違っていたかわからないので、皆さんからの助けが必要です。

ルートなしでSamsung Galaxy S3 LTE(GT-I9305)をバックアップしたい。グーグルで検索したところ、SDK Managerを使用したフルAndroidバックアップが見つかりました。 Java Development Kit 8 version 66(JDK 8u66 x64)やSDK Managerを含むAndroid Studioなど、これに必要なものをすべてインストールしました。それから悲しいことに、Google USB Driverをダウンロードする必要があります。ダウンロードしましたが、何も起こりませんでした。今は動作するはずだと思ったので、C:\ Users\MYNAME\AppData\Local\Android\sdk\platform-toolsに移動し、Shiftキーを押しながらadbを左クリックしました。次に、「ここでコマンドウィンドウを開く」をクリックしました。この後、「adb devices」と入力すると次のようになりました。

接続されたデバイスのリスト

3204cfaaf8611199デバイス

次に入力しました:

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

と言いました

デバイスのロックを解除し、バックアップ操作を確認します。

これを行うと、スマートフォンで「フルバックアップ」が開かれ、バックアップ用のパスワードを設定することができました。パスワードは必要ないので、[データのバックアップ]をクリックしました。ホーム画面に戻り、トーストメッセージとして[バックアップを開始しています...]と表示され、この直後に[バックアップが完了しました]と表示され、 40バイトのバックアップファイル。今何をすべきかわかりません。

29
DB.01

古いバージョンのadbを見つけようとするよりも、adb backupの引数に引用符を追加する方が簡単です。

adb backup "-apk -shared -all -f C:\Users\NAME\backup.ab"
40
NG.

adbを正しく呼び出す行は、私の側では次のように見える必要があります。

adb backup "-apk -obb -shared -all -system" -f phone-20180522-120000.adb

この行はLinux用ですが、WindowsとOS-Xでも同様です。 Linux(およびおそらくOS-X)の場合、次のようなスクリプトを使用して、自動的にファイルにタイムスタンプを割り当てます。

adb backup "-apk -obb -shared -all -system" -f "${PHONE:-phone}-`date +%Y%m%d-%H%M%S`.adb`"

重要バックアップを行った後、データを確認してください!私の側では、ファイルの破損が表示される場合があります(adbでこのようなエラーのみを監視しているため、私のコンピューターではないのではないかと思います)。

以下は、私が使用するcheck命令です。

set -o pipefail
for a in *.adb;
do
  echo "$a";
  dd if="$a" bs=24 skip=1 | zlib-flate -uncompress | tar tf - >/dev/null;
  echo "ret=$?";
done

ret=0と表示されるはずですが、表示されません。

  • inflate: data: invalid code lengths setが表示される場合、アーカイブが破損しており、おそらく復元に使用できません。
  • tar: Unexpected EOF in archiveが表示される場合、おそらくバックアップは使用可能です(すべてのバックアップはこの方法で終了しますが、理由はわかりません)。
  • ret=0だけが表示される場合でも、未検出のエラーが存在する可能性があり、それでも復元が妨げられます。
  • バックアップの正確さを確認するために、adb verifyコマンドが完全に欠落しています!

ご参考までに

他のすべての回答は役に立ちましたが、最後の詳細まで正確ではないため、この更新を投稿します。 (完全引用符で使用すると、バックアップが行われましたが、backup.abと呼ばれます)

私の環境は次のとおりです。

  • OS:Ubuntu 16.04
  • 電話:Android 7.0
  • ADB:1.0.32

完全な手順は次のとおりです(万が一、誰かがこれに必要なものを知らずにつまずいた場合に備えて):

  • Zeroth:adbをインストール(Ubuntu:Sudo apt-get install Android-tools-adb
  • 最初: 電話でUSBデバッグモードを有効にする
  • 2番目:USBデータケーブルでコンピューターのUSBに電話を接続します(充電専用ケーブルでは不十分です)
  • Ubuntu Phone Managerが表示され、電話のPINを尋ねられる場合があります。あなたはそれを必要としません、それが起こったらこれを閉じてください。
  • 3番目:adb devicesを実行します-XXXXXXXXXXXX unauthorizedのようなものが表示されます
  • 電話でしばらくすると、USBデバッグ許可を求めるメッセージが表示されます
    • これを一度許可します。セキュリティ上の理由から、指紋は簡単に偽造される可能性があるため、コンピューターを自動的に信頼しないでください。
    • 何かがこの確認ウィンドウの1ピクセルを遮っている場合(アクセシビリティ機能ボタンなど)、OKをタップできないことに注意してください。まず、妨害ウィンドウを移動します。
  • Forth:もう一度adb devicesを実行します-XXXXXXXXXXXX device のようなものが表示されるはずです。
    • 複数の回線が表示される場合は、複数の電話をコンピューターに接続しています。簡単な方法は、バックアップしたくないすべてのプラグを抜くことです。 (複雑な方法は、環境変数Android_SERIAL=XXXXXXXXXXXXを設定することです。)

上記のようにadb backupを実行します。ファイルを必要に応じて変更します。

  • これにより、バックアップ許可を求めるウィンドウが表示されます。
  • バックアップの取得中は、バックアップウィンドウを閉じないでください。これを試してみると、バックアップが停止し、結果のアーカイブが壊れていました。
  • パスワードを指定して、バックアップを暗号化できます。パスワードの安全性に関する情報はありません。ただし、このパスワードを忘れた場合に取ったバックアップを復元できない可能性があります。
  • このようなバックアップを他の電話に復元する方法についてはわかりません。私も復元を試みたことがないので、私もここで助けることができません。

ノート:

  • adb helpは、adb backupに可能なすべてのオプションを表示します
  • バックアップの前に、電話機で開いているすべてのアプリケーションを閉じます。これが必要かどうかはわかりませんが、確かに痛いことはありません。
  • バックアップの実行中は電話をそのままにしてください。これが必要かどうかはわかりませんが、確かに痛いことはありません。
  • イライラしないでください。バックアップを十分に残します。私の側では、約100 MB /分(YMMV)の進捗が見られます。そのため、私の携帯電話のバックアップには約30分かかります(2.5 GB)。

明らかにadb backupはすべてを完全にバックアップするわけではありません!

バックアップ(cd X && dd if=../XXXX.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -)を調べましたが、インストールされているすべてのアプリケーションが見つかりませんでした。

私が見つけることができたのは、このリストが不完全であることに注意してください:

  • 内部エミュレートSDカード:shared/0
  • 外付けSDカード:shared/1
  • アプリ:apps/-多くのアプリ(Google認証システムなど)がありませんでした
  • カレンダー:apps/com.Android.providers.calendar/db/calendar.db(おそらく)

私が見つけることができなかったもの(このリストは不完全であることに注意してください):

  • アラーム。 (おそらく適切なアプリを検出できませんでした)
  • 完全な外部SDカード(このカードには、以下に示すものよりも多くありますshare/1。たとえば、SDに移動したアプリなど)

結論:

  • adb backupが破損したバックアップを作成する場合がありますが、これは見過ごされる可能性があります。そのため、バックアップを確認するか、頻繁にバックアップして、すべてのバックアップが破損しないように十分に幸運なふりをしてください。
  • adb backupを使用すると、カメラ画像などの貴重なデータのほとんどのバックアップを取得できます。ただし、開梱するのは少し難しいかもしれません。
  • adb backupは、電話の完全なバックアップを行うのに十分ではありません。
  • adb backupは、SDカードをバックアップするのに十分ではないため、破損した場合は、復元された内容で新しいものに置き換えることができます。これは非常に悲しいです!

PS:「 Forth 」というタイプミスは偶然ではありません。

PPS:zlib-flateはUbuntu 18.04のパッケージqpdfにあります

9
Tino

これは、Ubuntu 15.10(「wily」)を使用して動作し、Androidバージョン6.0.1を実行しているGalaxy SM-G900Vをバックアップします。

を使用してインストール:

Sudo apt-get install Android-tools-adb

次に、コマンドラインから次のコマンドを実行しました(「Sudo」なし)。

adb backup -apk -shared -all -f backup.adb

結果:

user@hostname:~/droid$ ls -lah
total 1.2GB
drwxrwxr-x  2 user user 4.0BK Mar  6 18:43 .
drwxr-xr-x 52 user user 4.0KB Mar  6 17:40 ..
-rw-r-----  1 user user 1.2GB Mar  6 18:29 backup.ab

「NG」ありがとう。私は自分の電話がひどくなっていると思い始めていました。

追加を忘れた:adbバージョンの実行:Android Debug Bridgeバージョン1.0.31

5
Edmund

問題は、お使いのPCのadbバージョンです。 adbversion 1.0.31を使用すると、バックアップ/復元が成功します。

詳細: https://Android.stackexchange.com/questions/83080/adb-backup-creates-0-byte-file-prompts-for-current-backup-password-even-though および SDKバージョンのダウングレード方法

デバイスに1.0.31より前のadbバージョンがある場合は、PCで1.0.31のadbバージョンを使用する必要があります。 adb 1.0.32+のバージョンは、後方互換性を破壊しました。出典: 問題208337

4
Alan CN

すべてのアプリをバックアップできるわけではないようです。 Android明らかにアプリによるバックアップの無効化を許可:(

https://developer.Android.com/guide/topics/manifest/application-element.html (allowbackupを検索)

3
olejorgenb

誰かがまだ問題を抱えている場合に備えて-Windowsでは、ディレクトリのみを引用符で囲んでいます。たとえば、「C:\ Users\NAME\backup.ab」は機能していました。

1
Piers