Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker.

Clone A Raspberry Pi SD Card For Quick Storage Upgrades

TwitterFacebookRedditLinkedInHacker News

I recently found myself needing to switch micro SD cards in my Raspberry Pi 3, not necessarily because it needed a storage upgrade, but more because I had a different device that needed the exact memory card that the Raspberry Pi was using. The problem was that I had already done a lot of work on the Raspberry Pi that I didn’t necessarily want to have to do again. This made me wonder. Could I just clone the micro SD card and be good to go? The answer was yes, and it really wasn’t difficult to do.

We’re going to take a look at how to clone or copy a Raspberry Pi memory card to a new one with potentially more space than the previous.

When I switched memory cards, I switched from a 32GB micro SD to a 64GB micro SD. In my scenario this was a storage upgrade. Going forward you must be using a Mac or Linux computer with appropriate memory card readers. I am not a Windows user so I really don’t know how to do this via a Windows machine.

Discovering the Disks

Plug in both SD cards to your Linux or Mac computer. It doesn’t matter if you insert them via an SD card port or via a USB converter. We’ll need to list out the available drives once they are connected. On a Mac, execute the following via a Terminal:

diskutil list

The above command should list out all the drives and their partitions. It will look something like this:

List Disks on Mac

Pay close attention to the drives and names. I know that my two drives in the above example are /dev/disk7 which is 8GB and /dev/disk5 which is 32GB. When I did this for real, my other drive was really 64GB. Taking note of the wrong drives will definitely result in data loss.

On Linux, to determine the connected drives, execute the following from the Terminal:

fdisk -l

The same rules apply as did on a Mac computer.

Cloning the Disks

Once you’ve determined which disks to work with, it is time to start the copy process. The following command will work for both Mac and Linux:

sudo dd if=/dev/rdisk7 of=/dev/rdisk5 conv=notrunc bs=1m

Based on the information earlier, my source disk, the smaller one, was /dev/disk7. The destination disk was /dev/disk5. For purposes of speed, we are prefixing the disk name with an r. This will allow the copy to be significantly faster than if we chose not to include it.

When I copied my 32GB micro SD to 64GB, it took roughly fifteen minutes to complete.

Expanding the Raspberry Pi Storage Partition

In my scenario, the Raspberry Pi received a storage upgrade. It may not be the same scenario for you, but if it is, you probably want to take advantage of the extra space.

Most Debian flavors of Raspberry Pi Linux include a tool already installed called raspi-config. This tool lets us do a variety of things including the resizing of the SD card. To use it execute the following after having connected to the Raspberry Pi, whether that be through SSH or a screen:

sudo raspi-config

You’ll get a screen that looks like the following:

Raspberry Pi Config Tool

Follow the steps and reboot your Raspberry Pi. You should be good to go when you’re done. You can validate that the storage upgrade took place by executing the following while connected to the Raspberry Pi:

df -h

My storage available was roughly 64GB, which is exactly as it should have been.

Conclusion

You just saw how to copy or clone your Raspberry Pi micro SD card. To finish my story, I have an original GoPro Hero. I went and ordered a 64GB micro SD card for it, but found out after it arrived that the GoPro only supported up to 32GB. Luckily my Raspberry Pi had a 32GB card I could use to prevent me from having to order another one. By cloning the 32GB card I was not only able to take advantage of a storage upgrade, but it also prevented me from needing to reconfigure my Raspberry Pi.

Nic Raboy

Nic Raboy

Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in C#, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Unity. Nic writes about his development experiences related to making web and mobile development easier to understand.