---
# System prepended metadata

title: How to backup and restore the Raspberry Pi board?
tags: [Raspberry Pi]

---

Here’s a compact, reliable playbook to back up and restore a [Raspberry Pi](https://www.ampheo.com/c/raspberry-pi/raspberry-pi-boards) (SD card, USB SSD, or NVMe on [Pi 5](https://www.ampheo.com/search/Pi%205)). Pick the method that fits your setup and OS.
![MethodsBackupRaspberryPi](https://hackmd.io/_uploads/HkMCAGXYgg.jpg)

**Option A — Full-disk image (best “snapshot” backup)**
**On Windows**

1. Remove the Pi’s card/drive and plug it into your PC.
2. Use Win32 Disk Imager (or HDD Raw Copy):

* Select the device (e.g., E:).
* Choose a filename like pi-YYYYMMDD.img.
* Click Read to create the image.

3. Restore: Pick the image file and your target card/drive, click Write.

**On macOS / Linux**

1. Identify the device:

* macOS: diskutil list (e.g., /dev/disk2 → use rdisk2 for speed).
* Linux: lsblk (e.g., /dev/sdb).

2. Unmount it:

* macOS: diskutil unmountDisk /dev/disk2
* Linux: sudo umount /dev/sdb? (all partitions)

3. Create the image:

```
sudo dd if=/dev/rdisk2 of=~/pi-$(date +%Y%m%d).img bs=4m conv=sync,noerror status=progress
sync
```


4. Restore to a new card/drive:

```
sudo dd if=~/pi-20250820.img of=/dev/rdisk2 bs=4m conv=sync status=progress
sync
```

**Tips**

* You can’t write a bigger image to a smaller card unless you shrink the source first (use gparted to shrink the ext4 partition, or a script like PiShrink before imaging).
* After restore, Pi OS usually expands rootfs on first boot; if not, run sudo raspi-config → Advanced Options → Expand Filesystem.

**Option B — Clone live to another card/drive (no PC needed)**

On Raspberry Pi OS with Desktop: Accessories → SD Card Copier (aka piclone).

* Source: your current disk.
* Destination: USB card reader / [SSD](https://www.onzuu.com/category/ssds-hdds).
* Click Start to make a bootable clone.

This is great for creating a ready-to-swap spare.

**Option C — Incremental/file-level backups (fast, space-efficient)**
**1) Rsync to USB drive (from the Pi)**
```
# Mount backup drive at /mnt/backup first
sudo rsync -aAXH --info=progress2 \
  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
  / /mnt/backup/rootfs/
sudo rsync -aAXH /boot/ /mnt/backup/boot/
```


Restoring means installing a fresh Pi OS and then rsyncing the folders back (or just copying targeted files like /home, /etc).

**2) Rsync over the network (from a PC)**
```
# On your PC (Linux/macOS), pull from the Pi:
rsync -aAXH --numeric-ids pi@raspberrypi:/ /backups/pi-root/ \
  --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
rsync -aAXH --numeric-ids pi@raspberrypi:/boot/ /backups/pi-boot/
```

**What to always save (even if you don’t image)**

* Home & data: /home/pi/…
* Network & system config: /etc/wpa_supplicant/wpa_supplicant.conf, /etc/dhcpcd.conf, /etc/hostname, /etc/hosts, /etc/fstab, any /etc/systemd/system/*.service
* Package list (for re-install):

```
dpkg --get-selections > packages.list
# restore on fresh OS:
sudo apt-get update
sudo dpkg --set-selections < packages.list
sudo apt-get dselect-upgrade -y
```


* Docker / compose: your docker-compose.yml and named volumes (or docker volume backup).
* Custom kernels/overlays: /boot/config.txt, /boot/cmdline.txt, /boot/overlays/.

**NVMe/USB SSD (Pi 4/5) specifics**

* Treat the disk like an SD card: image/clone the whole device (/dev/sdX or /dev/nvme0n1) using dd/Win32 Disk Imager, or clone with SD Card Copier (source = NVMe, dest = USB).
* If the target is smaller, shrink partitions first (gparted) before imaging.

**Verify your backup (recommended)**

Mount and inspect the image:

* Linux: sudo kpartx -av pi.img → mounts partitions under /dev/mapper/…
* Or use a tool (7-Zip/OSFMount on Windows) to open the FAT32 /boot and ext4 root.

Checksum: sha256sum pi-YYYYMMDD.img > pi-YYYYMMDD.img.sha256 and keep both.

**Common restore pitfalls (and fixes)**

* Different-size cards: shrink first (source), or restore to equal/larger media.
* Cloned many Pis? Change hostname, static IPs, and regenerate SSH host keys:

```
sudo rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
```


* Headless boot lost SSH/Wi-Fi: ensure /boot/ssh file exists and wpa_supplicant.conf is in /boot (for first-boot copy) or in /etc/wpa_supplicant/.

**Quick choices**

* Want a set-and-forget spare? → SD Card Copier to a second card/SSD.
* Need an off-device snapshot? → Disk image with Win32 Disk Imager or dd.
* Want frequent, small backups? → rsync (cron job) of /home + /etc (+ package list).