Skip to content

Creating Backup image of SD Card/CD/DVD/USB Drive in Linux

December 11, 2011

Simple way to backup your device data is to create image (.img or .iso) file. You can even create image file for your folder.

To view device file of SD card use below command

fdisk -l

Lets say if your SD card is /dev/sdb then you can create image using

dd if=/dev/sdb of=./SDC_Backup.img

If you want to restore data then you can use same command but with input and output swapped

dd if=./SDC_Backup.img of=/dev/sdb

This is very simple way to backup your data. You can even create image for HDD data.

But recently I came across more complex situation in which SD card had multiple partitions.

We will see how to create partitions in SD Card and backup your data.

To view current partition run

lt /dev/sdb*
brw-rw—-. 1 root disk 8, 16 Dec 11 12:05 /dev/sdb
brw-rw—-. 1 root disk 8, 17 Dec 11 12:05 /dev/sdb1
brw-rw—-. 1 root disk 8, 18 Dec 11 12:05 /dev/sdb2
[root@ashishd BEAGLE_BONE]# fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 3904 MB, 3904897024 bytes
255 heads, 63 sectors/track, 474 cylinders, total 7626752 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *          63      144584       72261    c  W95 FAT32 (LBA)
/dev/sdb2          144585     7132859     3494137+  83  Linux

Command (m for help):

As shown above there are two partition one is bootable windows FAT32 and other is linux partition. Now you need to take backup of both partition So

dd if=/dev/sdb1 of=./sdb1.img

dd if=/dev/sdb2 of=./sdb2.img

Now if you want to create two partition on other SD card and copy data then you can use fdisk utility

fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3c410c14.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Use p to print existing partition

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System

Use m for HELP

Command (m for help):
Command action
a   toggle a bootable flag
b   edit bsd disklabel
c   toggle the dos compatibility flag
d   delete a partition
l   list known partition types
m   print this menu
n   add a new partition
o   create a new empty DOS partition table
p   print the partition table
q   quit without saving changes
s   create a new empty Sun disklabel
t   change a partition’s system id
u   change display/entry units
v   verify the partition table
w   write table to disk and exit
x   extra functionality (experts only)

Create NEW partition

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-7744511, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-7744511, default 7744511): 146596

Change Partition system ID to W96 FAT32 and set boot flag=1

Command (m for help): t

Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)

If you want to know partition types

Command (m for help): l

0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx
5  Extended        42  SFS             86  NTFS volume set da  Non-FS data
6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access
a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor
c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT
f  W95 Ext’d (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 ❤ 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1

 

Similarly create second Linux partition

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4, default 2): 2
First sector (146597-7744511, default 146597):
Using default value 146597
Last sector, +sectors or +size{K,M,G} (146597-7744511, default 7744511):
Using default value 7744511

Print partition table

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)
/dev/sdb2          146597     7744511     3798957+  83  Linux

Write all changes and exit

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

You can cross check partition using fdisk command

fdisk /dev/sdb

Command (m for help): p

Disk /dev/sdb: 3965 MB, 3965190144 bytes
122 heads, 62 sectors/track, 1023 cylinders, total 7744512 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3c410c14

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      146596       72274+   c  W95 FAT32 (LBA)
/dev/sdb2          146597     7744511     3798957+  83  Linux

Command (m for help): q

Then restore img file to both partition

dd if=./sdb1.img of=/dev/sdb1
144522+0 records in
144522+0 records out
73995264 bytes (74 MB) copied, 15.9707 s, 4.6 MB/s
dd if=./sdb2.img of=/dev/sdb2

Advertisements

From → Computer, Tutorials

Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: