Attend XDA's Second Annual Developer Conference, XDA:DevCon 2014!
5,732,020 Members 40,975 Now Online
XDA Developers Android and Mobile Development Forum

[GUIDE] How to make a nandroid backup directly to your computer without using sdcard

Tip us?
 
scandiun
Old
(Last edited by scandiun; 10th June 2013 at 08:20 PM.)
#1  
scandiun's Avatar
Senior Member - OP
Thanks Meter 750
Posts: 1,284
Join Date: Jul 2010
Default [GUIDE] How to make a nandroid backup directly to your computer without using sdcard

INFORMATION

This guide is intended to make a full backup of your android phone (the entire memory block with all partitions) or a single partition (including sdcards, etc) directly to your computer, in either
  • Block level (with dd): for single partitions or whole memory block (all partitions in one piece). The backup always has the same size which is the size of the partition.
  • File level (with tar): only for individual partitions. This only includes files and folders, so occupies much less space, depending on how much filled is the partition.
It can be done with the phone powered on or from ClockWorkMod Recovery (from both ADB works, while in Fastboot doesn't so won't apply). Unless specified the commands meant to be used from Windows. For Linux and Unix is similar.


REQUIREMENTS
  • Rooted Android Phone
  • Busybox installed on your phone
  • If you are using Linux / OS X you have native tools, for Windows download Cygwin, and install with it netcat, pv and util-linux. Get them from Cygwin's setup.exe
  • ADB installed.
  • Make sure adb.exe is in your windows' path. See here and here, or use Path Manager.
  • Android phone with USB Debugging enabled, and the proper drivers installed on Windows so the phone is recognized. Typing 'adb devices' on a terminal should show your device.


PARTITION IDENTIFICATION
You now have to identify the partition or block device that you want to backup. For a single partition you can use either tar or dd, while for the entire memory block you can only use dd.
For example, on Galaxy Nexus you have the list of partitions here and for Galaxy S2 here.
Usually on android, the entire block containing all partitions is located at /dev/block/mmcblk0 and the data partitions is a subpartition of it. You can push parted with GPT support to your device and see all information on a partition or block.

Whole phone memory -> /dev/block/mmcblk0 (may vary, in some phones this is the sdcard)
Subpartitions -> depends on each device. Usually at /dev/block/platform/dw_mmc/by-name/ there are listed by name linking to the real device.



Back up of the whole memory block (via adb)
Connect the phone in ADB mode and unlock the screen.
Open one Cygwin Terminal and enter (replace mmcblk0 if needed):
Code:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0
You will see the cursor blinking at the left. Now the phone is waiting to send the block over the network.

Open another Cygwin terminal and type:
Code:
adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
You will see how the image size is growing until it finishes. Now you have the whole phone backed up in raw format. You can see the contents of the GPT partition with gptfdisk tool, available for windows, linux and such. See official website and sourceforge to get it. You can do it the same from ClockWorkMod Recovery but you have to mount first the /system partition since the busybox included with clockworkmod does not come with netcat and you have to use the one from the system partition.
With further linux tools you could edit or extract single partitions from the whole block.

You can use adb via wifi as well with applications like WiFi ADB.


Back up of the whole memory block (via wifi)

Original post: [Q] Nandroid directly to computer w/o sdcard

We need to install a FTP server on the computer or the other device, configure a user with a password if we want to, and set some port. It uses by default 21 but this example uses 40. We must set a home dir for the user with write permissions.

Usually is a good idea to put myfifo in /cache not in /data because we may overwrite sensitive data in case we want to use that raw image for data recovery.

Open one Cygwin terminal
Code:
adb shell
su
mkfifo /cache/myfifo
ftpput -v -u user -p pass -P 40 COMPUTER_IP block.raw /cache/myfifo
Open another Cygwin terminal
Code:
adb shell
su
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo
Tips:
- Fifos only can be made on linux native filesystems, for example on a FAT partition is not possible.
- Reading from a partition does not modify it.

Now check on Filezilla Server the speed


Back up of the whole memory block (USB tethering, Wifi tethering)
To use tethering you have to disconnect the computer from all networks and connect it only to the phone with the type of connection you want.
Once you connect it, you can view the IP of the computer and the IP of the phone from connection properties. The ip is the computer ip and the gateway is the phone's ip.
  • Wifi Tethering: Computer <---Wifi---> Phone <---3G---> Internet
  • USB Tethering:
    • Computer <---USB---> Phone <---Wifi---> Internet
    • Conputer <---USB---> Phone <---3G---> Internet
This is exactly the same as via wifi, except that the transfer speed is much higher because the computer and the phone are directly connected, instead of using a router as a gateway. In this case, the gateway is the phone. USB tethering has the highest transfer rate.


Back up of a single partition (raw = every bit of the partition)
It is exactly the same as the the previous but replacing mmcblk0 by the corresponding partition. You can use in this particular case several software to read the partition from windows, depending on partition filesystem: DiskInternals Linux Reader, Ext2Read, Ext2 File System Driver for Windows, Ext4Explore, plugin for Total Commander and ImDisk Virtual Disk Driver. You can also use recovery software on individual partitions like Recuva in combination with VHD Tool or command line tools included with operating systems.


Back up of a single partition (tar = only files and folders)
In this case, you need the partition mounted. To see the list of mounted partitions type on Cygwin Terminal
Code:
adb shell mount
Now you need to know where is mounted the partition you want to backup, for example the firmware is mounted on /system, which is the ROM.
In this case you will have to open three terminals, because of android limitations:

Open one Cygwin terminal and create a fifo, in /cache, for example, and redirect the tar there
Code:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system
We have to do it this way because redirecting the tar to stdout (with - ) is broken on android and will corrupt the tar file.

Open a second Cygwin terminal and type:
Code:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo
Open a third Cygwin terminal and type:
Code:
adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > system.tar
You can browse the tar file with Winrar, Total Commander, PeaZip and almost any compression tool. Note that you shouldn't extract files or edit it since the tar format saves the permission and owner data for each file, that is lost when extracted to FAT / NTFS partitions and you will mess things when restoring.

LINKS
The Following 38 Users Say Thank You to scandiun For This Useful Post: [ Click to Expand ]
 
asdot
Old
#2  
asdot's Avatar
Senior Member
Thanks Meter 159
Posts: 683
Join Date: Dec 2011
Location: Jogjes
Umm...how to restore back from computer?

Sent from MARVEL
MARVEL | CyanogenMod 11.0 | INT2EXT | V4A Audio Effects | CWM Recovery 5.0.2.8
Acer Liquid Z120 | 4.1.1 | STOCK ROM Rooted
iTouch | 8 GB | iOS 5.1.1
Calculator Mini

The Following 2 Users Say Thank You to asdot For This Useful Post: [ Click to Expand ]
 
aunriz
Old
#3  
Junior Member
Thanks Meter 15
Posts: 22
Join Date: Apr 2010
I am a little new to this, I have installed Android sdk and i am able to see my device by using "adb devices" , i have also installed Cygwin, now i want to backup whole phone memory block so i tried executing the first line on cygin "adb forward tcp:5555 tcp:5555" i get an error saying -bash: adb :command not found.

I am sorry if i am missing any thing, please guide me, and also what do you mean by "download Cygwin, and install with it netcat, pv and util-linux"

Thanx a ton !!
 
scandiun
Old
#4  
scandiun's Avatar
Senior Member - OP
Thanks Meter 750
Posts: 1,284
Join Date: Jul 2010
Quote:
Originally Posted by aunriz View Post
I am a little new to this, I have installed Android sdk and i am able to see my device by using "adb devices" , i have also installed Cygwin, now i want to backup whole phone memory block so i tried executing the first line on cygin "adb forward tcp:5555 tcp:5555" i get an error saying -bash: adb :command not found.

I am sorry if i am missing any thing, please guide me, and also what do you mean by "download Cygwin, and install with it netcat, pv and util-linux"

Thanx a ton !!
You've done almost everything! But you skipped the section "make sure adb is in your path"

Probably you have adb.exe in the path

Code:
C:\Program Files (x86)\android-sdk\platform-tools\adb.exe
So you have to just add it to the Cygwin's path (would be better if you had added it earlier to the windows' path and cygwin will import it automatically but it is ok)

Code:
export PATH="/cygdrive/c/Program Files (x86)/android-sdk/platform-tools":$PATH
Remember to backup the path previously if you want.

Code:
echo $PATH > mypathbackup.txt
The Following 2 Users Say Thank You to scandiun For This Useful Post: [ Click to Expand ]
 
aunriz
Old
(Last edited by aunriz; 28th September 2012 at 08:36 PM.)
#5  
Junior Member
Thanks Meter 15
Posts: 22
Join Date: Apr 2010
Quote:
Originally Posted by scandiun View Post
You've done almost everything! But you skipped the section "make sure adb is in your path"

Probably you have adb.exe in the path

Code:
C:\Program Files (x86)\android-sdk\platform-tools\adb.exe
So you have to just add it to the Cygwin's path (would be better if you had added it earlier to the windows' path and cygwin will import it automatically but it is ok)

Code:
export PATH="/cygdrive/c/Program Files (x86)/android-sdk/platform-tools":$PATH
Remember to backup the path previously if you want.

Code:
echo $PATH > mypathbackup.txt
Thanks for replying but i cant seem to run the 3rd line , see this


WIN7L@WIN7L-PC ~
$ adb forward tcp:5555 tcp:5555

WIN7L@WIN7L-PC ~
$ adb shell
$ /system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

reloc_library[1311]: 10182 cannot locate 'android_reboot'...
CANNOT LINK EXECUTABLE

i hav sucessfully installed busybox v1.14.3, i am not sure what is causing the problem

EDIT:

i found that my directory ws system/bin instead of xbin
so i changed it and first part worked correctly, now i cant seem to get the second part


WIN7L@WIN7L-PC ~
$ adb forward tcp:5555 tcp:5555

WIN7L@WIN7L-PC ~
$ cd c:/

WIN7L@WIN7L-PC /cygdrive/c
$ nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
-bash: nc: command not found
-bash: pv: command not found
 
scandiun
Old
(Last edited by scandiun; 28th September 2012 at 08:45 PM.)
#6  
scandiun's Avatar
Senior Member - OP
Thanks Meter 750
Posts: 1,284
Join Date: Jul 2010
Quote:
Originally Posted by aunriz View Post
WIN7L@WIN7L-PC /cygdrive/c
$ nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
-bash: nc: command not found
-bash: pv: command not found
You don't have installed pv and netcat on cygwin. Run the setup.exe and install them.

If you run
Code:
whereis pv
whereis nc
should give you some path (in cygwin) but applies similar inside android.
The Following 2 Users Say Thank You to scandiun For This Useful Post: [ Click to Expand ]
 
aunriz
Old
#7  
Junior Member
Thanks Meter 15
Posts: 22
Join Date: Apr 2010
Quote:
Originally Posted by scandiun View Post
You don't have installed pv and netcat on cygwin. Run the setup.exe and install them.

If you run
Code:
whereis pv
whereis nc
should give you some path (in cygwin) but applies similar inside android.
Now i hav installed cv and nc and commands run sucessfully, but i get the raw file as just 1kb


First terminal:

WIN7L@WIN7L-PC ~
$ adb forward tcp:5555 tcp:5555
adb shell
WIN7L@WIN7L-PC ~
$ adb shell
$ /system/bin/busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/mmcblk0
/system/bin/busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/mmcblk0
$

second terminal:

WIN7L@WIN7L-PC ~
$ adb forward tcp:5555 tcp:5555

WIN7L@WIN7L-PC ~
$ cd c:/

WIN7L@WIN7L-PC /cygdrive/c
$ nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
55 B 0:00:00 [10.7kiB/s] [<=> ]

WIN7L@WIN7L-PC
 
scandiun
Old
#8  
scandiun's Avatar
Senior Member - OP
Thanks Meter 750
Posts: 1,284
Join Date: Jul 2010
No idea what you may be doing wrong
 
Ragdim
Old
(Last edited by Ragdim; 15th October 2012 at 05:25 PM.)
#9  
Junior Member
Thanks Meter 5
Posts: 18
Join Date: Oct 2012
Listen, I appreciate the guide, and it being basically the only one which popped up in google results, I can't gripe too much, but... you really, really need to make it more clear.

The point of a guide is to help a large group of people with varying degrees of knowledge (and if it's a guide targeted at a specific group of people, i.e tech savvy, then it needs to be indicated as such).

With that working definition in place, it follows that you should be as specific as possible; think of *everything*. By doing so, you not only avoid headaches for the people reading the guide, but for yourself as well since you don't have to reply to comments which might've otherwise been avoided.

I would post a question, but I'll probably have figured this out (with a good 1+ hours of searching no doubt) before anyone responds.

Here are some examples of what could be more specific:
"ADB installed." - what is ADB? Where's the link? It's not reasonable to assume people use these tools on a regular basis or remember them.
"You can push parted with GPT support to your device and see all information on a partition or block." - okay, so we know what it does but not how to install it or use it.
"ADB mode" - is this important? What is it? Not sure because it was glossed over.

These are just some examples. It's not the most horrendous trespass ever committed, but definitely annoying. Just spell it out from one step to the next, it works far better than topics with subheadings and unintuitive concepts being assumed as general knowledge on the behalf of noobs like me.

Edit: I'm just going to take everything off my SD card, use nandroid, and then copy the nandroid backup to computer as well. Please improve the guide, thanks.
The Following 4 Users Say Thank You to Ragdim For This Useful Post: [ Click to Expand ]
 
stevegt
Old
#10  
Junior Member
Thanks Meter 5
Posts: 1
Join Date: Nov 2012
Default Greatly appreciate this!

For me, a long-time UNIX and Linux administrator, this little guide was a breath of fresh air. Scandiun, *Thank You* for putting it together. It makes perfect sense to me -- just treat the phone as the linux machine it is. I'm becoming convinced that most of the more recent "developers" hanging around the android community have never used a linux machine before -- they don't seem to know what's going on, they go way out of their way to write overkill tools to do things clumsily that can already be done cleanly and quickly from the command line, and then they wrap those tools in so much mystery, black magic, and script-kiddie terminology that I can't figure out what they do either, and I certainly don't trust them doing things to my phone.

For example, I've got a new Galaxy S3, and just wasted a whole day digging around on xda, reviewing all of the "kewl rooting mods" until I got sick of it. Why the *heck* are people flashing entire partitions just to install a setuid /system/xbin/su on these devices? The rooting method I wound up using was dirt simple -- just find an rc exploit and use it to install an 'su' binary, by typing a few commands via adb. I used a variation of the exploit mentioned in http://seclists.org/fulldisclosure/2012/Aug/171, and elaborated in http://forum.xda-developers.com/show....php?t=1790104, http://forum.xda-developers.com/show....php?t=1792342, http://galaxys3root.com/galaxy-s3-ro...s3-on-mac-osx/, and http://forum.xda-developers.com/show....php?t=1827518. If you are a UNIX person, you'll recognize what's going on with that exploit and be able to come up with something that suits your own needs. If you aren't a UNIX person, then you'll be completely lost. Sorta like this guide.

For anyone who doesn't yet know what adb is, or who's never used standard UNIX/Linux tools like dd, netcat, gparted, or busybox, I agree that this guide is not only not going to help you, but may actually aid you in shooting yourself in the foot with extreme efficiency. But please don't criticize or nag the OP in return for helpful advice freely given. You won't learn much about UNIX tools on an Android-related web site in any case. I recommend starting with a Linux systems administration book -- the Nemeth series is always good. But if you do take that route, you need to expect to take time to learn the basics.

The Following 5 Users Say Thank You to stevegt For This Useful Post: [ Click to Expand ]
Tags
cygwin, nandroid, onenand, parted
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes