Friday, February 14, 2014

48: Clone (or back up) your Raspberry Pi SD card
modified 2/7/2018

I've recently bought my 2nd Pi. This led me to try to make a copy of my Pi-1's SD card. I've been backing up that SD card by moving it to an SD reader plugged into my iMac (by USB). There, I used the Terminal "dd" command to make a literal 16gb copy of the card. When I screwed up the card (stupidly changed a GPIO connection while the Pi was powered up and running) I successfully fixed the SD from the iMac back up. But, in this case, I was copying from and to the same SD card.

When I tried to do the same thing to a different 16bg card it didn't work. The 2 cards did not have exactly the same number of data blocks -- off by 1(?).

After trying that a couple useless times, I went looking for something different. And this is it:

https://github.com/billw2/rpi-clone

This is a different approach.  rpi-clone is a long-ish shell command that runs on the Pi and copies your working SD content to the second card (I moved my USB reader to the Pi).

Advantages:
1. It worked!
2. I didn't have to shutdown the Pi or move its SD card.
3. It was faster than the literal 16gb copy.
4. It can do partial updates to an existing card copy.

Actual rpi-clone command (assuming you named it rpi-clone.sh);

% sudo sh rpi-clone [ -f ] sda

(Assuming that a list (ls command) of /dev/sd* listed "sda")

The only problem I had was that I ran it via the Mac Terminal "ssh" interface. The first time I tried rpi-clone I left it (took 25 minutes) and before I returned ssh had timed out my connection to the Pi -- and that aborted the last question from rpi-clone. The 2nd try, I stuck around.

One further advantage of rpi-clone: The last thing that the command does is unmount the SD copy. But if the copy is for a new Pi system you'll want to make a few changes first. For example: you can change /etc/hostname and /etc/network/interfaces. In another Terminal window you can --

cd /mnt/clone/etc # that's where the new card is mounted
nano hostname # change the name?
...
nano network/interfaces 
...

etc.

Note all of the above has to be run with sudo. Be careful!

Oh, and congrats to Bill Wilson for writing rpi-clone.

1 comment:

  1. It seems that dosfstools needs to be installed first

    I had this message during first runs :

    [Note] fsck.vfat was not found.
    It is recommended to install dosfstools:
    $ sudo apt-get update
    $ sudo apt-get install dosfstools

    The process then stopped during the first step (imaging), causing the pi to shut down

    I installed dosfstools as recommended and it seems to be working now - a run seems to be in progress for good this time

    ReplyDelete