Home » How to fully backup non-rooted devices?

How to fully backup non-rooted devices?


Solution Available for 4.0+ Devices:

For 4.0+ devices there is a solution called “adb backup”.

Note: This only works for apps that do not disallow backup!
Apps that disallow backup are simply ignored when creating a backup using this way.

This makes use of adb so you have to have the Android Software Development Kit (SDK) installed on your computer (on some Linux distributions: just packages android-tools-adb and android-tools-adbd).

NOTE: This solution will not back up and restore contact, SMS or calendar information

The options for the adb command are:

adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|nosystem] [-keyvalue|-nokeyvalue] [<packages...>]
  • -f : the path of the *.ab file that will be saved on your computer. This file is a compressed file that contains an archive of the data/apks from your device.
  • -apk|-noapk : indicates if the *.apk files should be backed up (default is -noapk)
  • -obb|-noobb : enable/disable backup of any installed apk expansion (aka .obb) files associated with each application (default is -noobb)
  • -shared|-noshared: enable/disable backup of the device’s shared storage / SD card contents (default is -noshared)
  • -all : indicates that you want the entire system backed up. you can use the packages filter to just backup specific packages, or use -all for a full system backup.
  • -system|-nosystem: indicates if all the system applications and data are included when backing up. (default is -system)
  • -keyvalue|-nokeyvalue: include apps that perform key/value backups. (default -nokeyvalue)
  • <packages> : this is where you can list specific packages to backup. Use these if you want to back up only specific applications. If using -all, you do not need to specify packages.

How to backup your device:

First, you need to enable “USB debugging” on you Android device:

  1. Go to “About device” (or “About phone” or “About tablet”) section in Settings
  2. Tap 7 times on “Build number” row (usually the last row). After that “Developer options” section will appear in Settings

Enabling "Developer options"

  1. Go to “Developer options” section in Settings
  2. Tap the “USB Debugging” checkbox

Enabling "USB Debugging"

Second, on your PC from the command prompt you will need to be able to locate both the adb command and your backup file. The easiest way to do this is to run the adb command from the directory where adb is located.

In Windows Explorer navigate to where you installed the Android SDK and SHIFT+RIGHT CLICK on the platform-tools folder.

This will open a command prompt (your window will look different than mine).

In Mac’s Terminal you can type cd and then drag the folder platform-tools folder from finder to the terminal window and the path will be inserted. Hit and you will be in the right place.

In Linux, I hope you know how to locate and cd to the parent directory of the adb command. You are using Linux after all.

From here type the following command:


adb backup -apk -shared -all -nosystem -f backup08262012.ab

Linux & Mac

./adb backup -apk -shared -all -nosystem -f backup08262012.ab
## Notice that -all doesn't mean ALL. See the big bold NOTE at the top of this answer.
## You can also include -system and -keyvalue to be able to backup and restore *some* system settings.
# drop the `./` in the command if you are using `android-tools-adb` package

(if you want to store the backup in a different directory, include a path for the “.ab” file as shown in the screenshot below.)


You will then be prompted on your device for a password (this is used to encrypt the backup):
backup screen

To restore, it works almost the same way.


adb restore backup08262012.ab

Linux & Mac

./adb restore backup08262012.ab

Then you will be prompted for your password to restore on the device:
restore screen

Now for the shameless self promotion:

Droid Explorer (v0.8.8.7+) will be able to handle this for 4.0+ devices. While Droid Explorer is currently optimized for Rooted devices, this functionality will work for non-rooted devices as well.

Droid Explorer will do full backups of the device and save them in %USERPROFILE%Android Backups</code>. Within that folder is a folder named for the device, and inside that folder are the backups.

de backup

Double clicking on the Android Backup file will allow you to restore your device from the backup file.

There is an application called Simple ADB Backup.

enter image description here

Simple ADB Backup Backs Up Your Android Phone from the Desktop, No Root Required. Most Android backup tools require root, or run from your phone and save your data to your SD card. Simple ADB Backup is different. The app runs from and backs up your phone’s data to your desktop, and does it all without root.

To use Simple ADB Backup, you’ll need USB Debugging Mode enabled on your Android device (Go to Settings > Developer, enable developer options, then enable USB debugging) and the utility installed on your desktop. That’s about it: just plug in your phone, launch the app on your Windows or Linux system, and choose a backup option. You have the option to back up your entire device, just apps, all data with or without system apps, or even a single app if you choose.

The app also lets you restore backed up data to your device. Before you back up, you’ll be prompted to generate a password you’ll also have to type into the app on your phone before the backup can begin, but after that, the process runs smoothly. It’s extremely simple, completely free, and doesn’t require you root first.

Whilst Titanium Backup is a more feature-filled app if you’re willing to root (especially if you want a bulletproof backup system for your Android), and MyBackup Pro is great if you’re migrating to a new phone and don’t want a desktop as a middleman, but Simple ADB Backup is free and apparently so easy to use that even Android beginners can easily and quickly back up their important data.

Simple ADB Backup was released for free over at the XDA Developer forums. Hit the link below to download it there.


Please Note: This is a new application currently still in Beta

Technically, you CAN create full Nandroid backup without rooting the device. You just need to flash CWM (or, any recovery which supports Nandroid backup) over USB. For example, you can use Odin (Windows) to flash CWM to Samsung devices after going to download mode, all without touching the Android. So, there’s no rooting or root access involved at all.

Related Solutions

Why not drop the “auto” keyword? [duplicate]

Your proposal would be rejected on the basis of backward compatibility alone. But let's say for the sake of argument that the standards committee like your idea. You don't take into account the numerous ways you can initialize a variable widget w; // (a) widget...

Recursive to iterative using a systematic method [closed]

So, to restate the question. We have a function f, in our case fac. def fac(n): if n==0: return 1 else: return n*fac(n-1) It is implemented recursively. We want to implement a function facOpt that does the same thing but iteratively. fac is written almost in...

How can I match values in one file to ranges from another?

if the data file sizes are not huge, there is a simpler way $ join input1 input2 | awk '$5<$4 && $3<$5 {print $2, $5-$3+1}' B100002 32 B100043 15 B123465 3 This Perl code seems to solve your problem It is a common idiom: to load the entire...

Javascript difference between “=” and “===” [duplicate]

You need to use == or === for equality checking. = is the assignment operator. You can read about assignment operators here on MDN. As a quick reference as you are learning JS: = assignment operator == equal to === equal value and equal type != not equal !==...

Compiler complains about misplaced else [closed]

Your compiler complains about an misplaced else because, well, there is an else without a preceding if: // ... for (j=1; j<n-i; j++) { if(a[j]<=a[j+1]) { // ... } // END OF IF } // END OF FOR else { continue; } // ... The else in your code does not follow...

Bootstrap – custom alerts with progress bar

/* !important are just used to overide the bootstrap css in the snippet */ .alertContainer { border-radius: 0 !important; border-width: 0 !important; padding: 0 !important; height: auto !important; position: absolute !important; bottom: 15px !important; left:...

How to Garbage Collect an external Javascript load?

Yes, s.onload = null is useful and will garbage collect! As of 2019, it is not possible to explicitly or programmatically trigger garbage collection in JavaScript. That means it collects when it wants. Although there is cases where setting to null may do a GC...

Math programming with python

At first, what you are looking for is the modulo operator and the function math.floor() Modulo from wikipedia: In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus). for example: 12%12=0...

Android slide over letters to create a word [closed]

Here some advice you can use: First for each cell you can create an object that represents the state of that cell: class Cell { char mChar; int row,column; boolean isSelected; } then you can create a 2D array of your cells Cell[][] mTable = ... For views you...

Sum two integers in Java

You reused the x and y variable names (hence the variable x is already defined in method main error), and forgot to assign the ints read from the Scanner to the x and y variables. Besides, there's no need to create two Scanner objects. public static void...

Extend three classes that implements an interface in Java

Using this simplified implementation of the library, using method() instead of M(): interface IFC { void method(); } class A implements IFC { public void method() { System.out.println("method in A"); }; } As akuzminykh mentions in their comment You'd write a...

How to set the stream content in PHPExcel? [closed]

Okey, First thing first PHPExcel_Worksheet_MemoryDrawing() can't solve your problem if you insist to use stream content and pass that to your worksheet your PDF will not render your image. But you can use `PHPExcel_Worksheet_Drawing()' if you want to render...

How to remove all files from a directory?

Linux does not use extensions. It is up to the creator of the file to decide whether the name should have an extension. Linux looks at the first few bytes to figure out what kind of file it is dealing with. To remove all non-hidden files* in a directory use: rm...

Hacker used picture upload to get PHP code into my site

Client side validation The validation code you have provided is in JavaScript. That suggests it is code that you use to do the validation on the client. Rule number one of securing webapps is to never trust the client. The client is under the full control of...

First Time HTML5/CSS Site

Semantically, I would suggest using HTML5 elements more. For example, instead of... <div id="header"> <div id="logo"></div> </div> Use instead: (the ID can stay if you want it to) <header> <div id="logo"></div>...