Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Backup android app, data included, no root needed, with adb

Backup android app, data included, no root needed, with adb

adb is the Android CLI tool with which you can interact with your android device, from your PC

You must enable developer mode (tap 7 times on the build version in parameters) and install adb on your PC.

Fetch application APK

To get the list of your installed applications:

adb shell pm list packages -f -3

If you want to fetch all apk of your installed apps:

for APP in $(adb shell pm list packages -3 -f)
do
  adb pull $( echo ${APP} | sed "s/^package://" | sed "s/base.apk=/base.apk /").apk
done

To fetch only one application, based of listed packages results:

adb pull /data/app/org.fedorahosted.freeotp-Rbf2NWw6F-SqSKD7fZ_voQ==/base.apk freeotp.apk

Backup applications datas

To backup one application, with its apk:

adb backup -f freeotp.adb -apk org.fedorahosted.freeotp

To backup all datas at once:

adb backup -f all -all -apk -nosystem

To backup all datas in separated files:

for APP in $(adb shell pm list packages -3)
do
  APP=$( echo ${APP} | sed "s/^package://")
  adb backup -f ${APP}.backup ${APP}
done

Restore Applications

First, you have to install the saved apk with adb:

adb install application.apk

Then restore the datas:

adb restore application.backup

Extract content of adb backup file

You will need the zlib-flate binary. You will able to use it by installing the qpdf package.

apt install qpdf

Then, to extract your application backup:

dd if=freeotp.adb bs=24 skip=1 | zlib-flate -uncompress | tar xf -

Miscellaneous: remove non-wanted applications

Sometimes, you have already installed (but non wanted) apps when you buy an Android Smartphone. And you can't uninstall these apps. So Bad. And some pre-installed app are not present on PlayStore. WTF.

You can remove them with this command, and root is not needed:

adb shell pm uninstall --user 0 non.wanted.app

You can first disable them, then when you are sure, you can remove them.

To list disabled apps:

adb shell pm list packages -d

Example:

# Google Chrome
adb shell pm uninstall --user 0 com.android.chrome
# Gmail
adb shell pm uninstall --user 0 com.google.android.gm
# Google Play Films et Séries
adb shell pm uninstall --user 0 com.google.android.videos
# Youtube
adb shell pm uninstall --user 0 com.google.android.youtube
# Google Play Music
adb shell pm uninstall --user 0 com.google.android.music
# Google Hangouts
adb shell pm uninstall --user 0 com.google.android.talk
# Google Keep
adb shell pm uninstall --user 0 com.google.android.keep
# Google Drive
adb shell pm uninstall --user 0 com.google.android.apps.docs
# Google Photos
adb shell pm uninstall --user 0 com.google.android.apps.photos
# Google Cloud Print
adb shell pm uninstall --user 0 com.google.android.apps.cloudprint
# Google Actualités et météos
adb shell pm uninstall --user 0 com.google.android.apps.genie.geniewidget
# Application Google
adb shell pm uninstall --user 0 com.google.android.googlequicksearchbox

Resources

https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device https://androidquest.wordpress.com/2014/09/18/backup-applications-on-android-phone-with-adb/ https://stackoverflow.com/questions/34482042/adb-backup-does-not-work https://stackoverflow.com/questions/53634246/android-get-all-installed-packages-using-adb https://www.dadall.info/article657/nettoyer-android https://etienne.depar.is/a-ecrit/Desinstaller-des-applications-systemes-d-android/index.html

@natevw

This comment has been minimized.

Copy link

@natevw natevw commented Mar 13, 2021

For other platforms there's some zlib alternatives in the thread here. E.g.:

dd if=myAndroidBackup.adb bs=24 skip=1 | openssl zlib -d | tar -x
@davtur19

This comment has been minimized.

Copy link

@davtur19 davtur19 commented May 17, 2021

For those using adb on Windows with bash

adb='/mnt/c/adb/adb.exe'

for APP in $($adb shell pm list packages -3 -f)
do
  $adb pull $( echo ${APP} | sed "s/^package://" | sed "s/base.apk=/base.apk /" | sed 's/\r//g').apk
done
@jrd

This comment has been minimized.

Copy link

@jrd jrd commented Jun 22, 2021

pm list packages could be replaced by cmd package list packages as the pm list is a deprecated alias and can go away at any version.

@thebigsmileXD

This comment has been minimized.

Copy link

@thebigsmileXD thebigsmileXD commented Aug 14, 2021

To back up your SD card or any other folder to a tar file, you can do
adb exec-out "cd /storage/sdcard0 && tar c * -" > sdcard.tar
where adb pull might fail due to the target file system not supporting case-sensitive file names etc.

@ToniCipriani

This comment has been minimized.

Copy link

@ToniCipriani ToniCipriani commented Sep 21, 2021

Powershell for individual package backup:

$adbExe = "(path to adb.exe)"

adb shell pm list packages -3 | Foreach-Object{  
    $packageName = $_ -replace "^package:(.*)$", "`$1"
    Write-Host $packageName
    $params = $adbExe + ' backup -f ' + $packageName.Trim() + '.backup ' + $packageName
    Invoke-Expression $params
}

Mind you for encrypted devices (which is almost every one out there these days) you will be prompted for a password ever single time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment