Adb backup does not work

后端 未结 7 1162
礼貌的吻别
礼貌的吻别 2021-02-01 02:05

I need help from you guys, because I don\'t know what I did wrong with adb backup.

I want to backup my Samsung Galaxy S3 LTE (GT-I9305) without root. I googled it and fou

7条回答
  •  粉色の甜心
    2021-02-01 02:58

    The line, which correctly invokes adb, needs to look like this at my side:

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

    This line is for Linux, but should do for Windows and OS-X as well. For Linux (and probably OS-X), you can use a script like following, which automatically assigns a timestamp to the file:

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

    Important After doing a backup, verify your data! At my side, sometimes some corruption of the file shows up (and I doubt it is my computer, as I only observe such errors with adb).

    Here is a check instruction I use:

    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
    

    It should show ret=0, but it doen't.

    • If you see inflate: data: invalid code lengths set your archive is corrupted and - very likely - unusable for restore!
    • If you see tar: Unexpected EOF in archive your backup probably is usable (all backups end this way, I do not know why).
    • Even if you see just ret=0 there might be undiscovered errors which still prevent a restore.
    • There is definitively missing an adb verify command, to verify correctness of a backup!

    FYI

    I post this update, as all other answers were helpful, but not exact to the last detail. (When used with full quotes, a backup was done, but called backup.ab)

    Here is my environment:

    • OS: Ubuntu 16.04
    • Phone: Android 7.0
    • ADB: 1.0.32

    The full procedure was (just in case somebody stumbles upon this not knowing what is needed):

    • Zeroth: Install adb (on Ubuntu: sudo apt-get install android-tools-adb)
    • First: Enable USB debugging mode on the phone.
    • Second: Attach phone to USB of the computer with an USB data cable (a charge only cable is not enough)
    • Note that the Ubuntu Phone Manager might show up and ask you for the phone's PIN. You do not need that, close this if it happens.
    • Third: run adb devices - you should see something like XXXXXXXXXXXX unauthorized
    • After some time on your phone a message shows up which asks for USB debugging permission
      • Allow this once. For security reasons, you should not automatically trust the computer, as the fingerprint can be easily faked.
      • Note that if something is obstructing a single pixel of this confirmation window (like some accessibility feature button) you cannot tap on the OK. First move the obstructing window.
    • Forth: Now again run adb devices - you should see something like XXXXXXXXXXXX device
      • If more than one line shows up, you attached more than one phone to the computer. The easy way is to unplug all those you do not want to backup. (The complex way is to set the environment variable ANDROID_SERIAL=XXXXXXXXXXXX.)

    Now run adb backup as shown above. Change the file to your needs.

    • This brings up a window which asks for backup permission.
    • Do not close the backup window while the backup is taken. When I tried this, the backup stopped and the resulting archive was broken.
    • You can give a password to encrypt your backup. I do not have any information on how secure the password is. But it is very likely, that you cannot restore the backup taken in case you ever forget this password.
    • I have no idea on how to restore such a backup to other phones. I even never tried the restore, so I cannot help here, too.

    Notes:

    • adb help shows all possible options to adb backup
    • Close all open applications on your phone before the backup. I do not know if this is needed, but it certainly cannot hurt.
    • Leave the phone alone while the backup runs. I do not know if this is needed, but it certainly cannot hurt.
    • Do not be impatient. Leave the backup plenty of time. At my side I see a progress of about 100 MB/Minute (YMMV). So the backup takes about half an hour for my phone (2.5 GB).

    Apparently adb backup does not completely backup everything!

    I had a look into the backup (cd X && dd if=../XXXX.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -) and did not find all installed applications.

    What I was able to find was (note that this list is incomplete):

    • Internal emulated SD-Card: shared/0
    • External SD-Card: shared/1
    • Apps: apps/ - many apps (like Google Authenticator) were missing
    • Calendar: apps/com.android.providers.calendar/db/calendar.db (probably)

    What I was not able to find (note that this list is incomplete):

    • Alarms. (I was probably not able to detect the right app)
    • Full external SD-card (there is more on this card than what is shown below share/1. For example the apps, which are moved-to-SD.)

    Conclusions:

    • Sometimes adb backup might create corrupt backups, which can go unnoticed. So either check your backup or do frequent backups and pretend to be lucky enough such that not all backups go corrupt.
    • With adb backup you get a backup of most of your precious data, like camera images and so on. It might be a bit difficult to unpack it, though.
    • adb backup is not enough to do a complete backup of your phone.
    • adb backup is not enough to backup your SD-card such, that if it breaks, you are able to replace it by a new one with the contents restored. This is very sad!

    PS: The typo "Forth" is not an accidental one.

    PPS: zlib-flate can be found in package qpdf on Ubuntu 18.04

提交回复
热议问题