Recently I purchased a new laptop. Typically my first move is to ditch Windows or Mac (yes I’ve done both) and install Linux. This time, just in case I ever want to completely restore the system (recovery partition and all), I decided to make a disk image of the entire hard drive.
Being that the capacity of the hard drive is close to 500 GB it actually turned out that I didn’t have enough free space to store the entire image. However, since it was a brand new computer I knew there was plenty of zeroes on the disk and thus plenty of opportunity to reduce the actual size of the disk image by converting those zeroes into holes in a sparse file .
Now usually when creating a disk image I would just use
doesn’t have any options that are sparse file aware. Luckily I was able
to find a
that addressed my particular predicament.
The secret sauce here is the
--sparse=always option of
cp. By piping
the output of
cp, I could then copy my disk image! The next
step was to fire up a live cd, connect an external hard drive and run
the following command to create the disk image:
dd if=/dev/sda | cp --sparse=always /dev/stdin lenovo.img
Just to be careful I decided to md5sum both the disk image and the block device to make sure they had the same sums:
dustymabe@media: >sudo md5sum lenovo.img fbd07bc0fc46622e0bfc1ac2b44915e5 lenovo.img ubuntu@ubuntu:~$ sudo md5sum /dev/sda fbd07bc0fc46622e0bfc1ac2b44915e5 /dev/sda
Success! So how much space did I actually save by make the image a
sparse image? We can see by using the
dustymabe@media: mnt>du -sh lenovo.img 38G lenovo.img dustymabe@media: mnt>du -sh --apparent-size lenovo.img 466G lenovo.img
This means that the disk image only actually took 38 GB of disk space
but would have taken 466 GB if I had not made it a sparse disk image…
Until next time…