I want to reset my phone but want to recover the system data before doing so. I tried to create a backup with adb and tried to restore it on a virtual device to see if it works. So I tried to restore it with adb on the virtual device and it would say that it fully restored it at the end. But nothing really changed. I wonder if adb backup/restore still works or if I did something wrong.
1 Answer
Deprecated means it is fully functional but may be removed in future versions. Google of course prefers that their cloud is used so that they still control access to the backup data.
The only part that seem to have changed by the deprecation is that the help text of adb backup
has been removed from the adb binaries. So to show the help text with all options of adb backup you have to execute now: adb shell bu help
However adb backup
has a problem with app that disallow backup via it's AndroidManifest.xml. The main problem you don't get any warnings or errors for such apps. hence it is totally unclear if a backup was successful by just looking at the messages printed on the console while creating the backup.
From an app perspective there is also the way to allow only partial backups. By a configuration file the app can specify certain paths or file types to be included or excluded from backup.
Therefore my recommendations is to backup only single apps without APK. Based on the size of the created backup archive you can see if the backup was potentially successful or not.
An alternative is to create a full backup (with or without APKs) and in the end convert the created backup archive using Android Backup Extractor to a tar archive and check that archive for the most relevant apps what files have been backuped.
Update for Android 12+
On Android 12+, apps that have a targetSDK
of 31 or higher (are developed for Android 12+) app data backup via adb backup
seems to be no longer possible:
For apps that target Android 12 (API level 31) or higher, when a user runs the adb backup command, app data is excluded from any other system data that is exported from the device.
https://developer.android.com/about/versions/12/behavior-changes-12#adb-backup-restrictions
adb backup
on Android 12 only work if targetSDK
is lower than 31 or the app is marked as debuggable=true
. Apps downloaded from Play Store are never debuggable and Google enforces apps to set targetSDK
to the latest API level. Therefore apps from Google Play Store that has been updated in 2022 or later should no longer allow app data backup using adb backup
.
-
How do you backup single apps without the apk as you recommend? Titanium backup? Pull /data/data/com.whatever-app-name? Other ways to do this? Commented Nov 9, 2021 at 23:01
-
@Nomenator accessing
/data/data
requires root permissions soadb pull
from that directory requires root permissions +adb root
(which itsel requires a patched adb binary). As this answer is about the commandadb backup
I am wondering why you ask foradb pull
instead of tryingadb backup
for the package name you want to backup.– RobertCommented Nov 10, 2021 at 8:10 -
2so do i understand this correctly, that there is ... with android 13 ... NO WAY to fully backup your device so it is recoverable after a disaster? I already find it extremely stpd that there is no out of the box way from google themselves like there is with IOS, but it gets even more insane ...– ChrisCommented Jan 29, 2023 at 10:28
-
2"On Android there is no way to backup the inner data in a secure way" Funny that Seedvault manages that. It's a replacement to the Google Cloud backup used with several custom ROMs. It allows you e.g. to store your backups on an external SD card or a cloud service under your control (Nextcloud). As long as you have the pass phrase, you thus could restore at least app backups to any device, and even more to an identical device. TL;DR: enforcing encrypted backups (phrase stored on-device in (hardware) keystore) would be what "secures" backups.– IzzyCommented Feb 7, 2023 at 23:17
-
1@Izzy: "[Seedvault] uses the same internal APIs as
adb backup
which is deprecated and thus needs a replacement." Commented Jun 30, 2023 at 13:40