地址:https://sspai.com/post/66938

备份树莓派系统

在折腾树莓派的过程中,我们少不了在系统中安装和配置各种软件、Python 库、环境依赖等等。搞机是有风险的,为了在我们将系统折腾翻车的时候有一个撤回的机会,我们可以在适当的时候对系统进行备份,以备有需要时可以恢复系统。

根据调研和实测,目前有两种备份树莓派系统的方法,它们有各自的适用范围。以下分别介绍这两种方法。

对 TF 卡进行完整备份

我们在 PC 上用来向 TF 卡烧录系统的软件 Win32DiskImager,也可以用来将 TF 卡上的系统完整备份为一个镜像文件。

我们把树莓派关机后,将 TF 卡拔出,通过读卡器连到 PC 上(照例忽视系统弹出的「需要格式化」等警告)。在 PC 上打开 Win32DiskImager,在「映像文件」中选择准备存放镜像文件的路径,并输入镜像文件名称和「.img」后缀。确认「设备」选中的是 TF 卡 boot 分区对应的盘符,然后点击「读取」,此时软件会从「设备」向「映像文件」传输文件,完成后,TF 卡上的树莓派系统就备份到 D:/Raspberry Pi/systemBackUp.img 这个镜像文件中了。

img

现在,我们就将树莓派现在的系统完整备份到了这个镜像文件。想恢复这个系统时,我们只需要将 TF 卡格式化之后,按照上文「2. 烧录树莓派系统」中的操作,将此镜像文件烧录到 TF 卡中即可。

推荐大家使用 SD Card Formatter 来格式化 TF 卡,有 Windows 和 MacOS 版本。它可以十分方便、干净完成对 TF 卡的格式化,不容易误格式化其他硬盘。

img

无需其他设置,直接按「Format」即可完成格式化。

这个备份系统的方法操作简单,但是它的缺点是需要将 TF 卡完整备份,所生成的镜像文件体积等于 TF 卡的容量。因此这种方法比较适用于对小容量 TF 卡(≤ 16 GB)的备份,对于大容量的 TF 卡(比如 ≥ 128 GB),每次备份都会产生一个 128 GB 的镜像文件,这显然是不科学的。这就引出了我们的第二个备份方法。

使用 rpi-backup 脚本进行备份

这种方法使用大佬编写的 rpi-backup 脚本对树莓派系统进行备份。这个备份方法所生成的镜像文件体积是系统已用空间的 1.2 倍,相比于第一种备份方法,这种方法可以显著缩小镜像文件的体积,节省镜像文件所占用的磁盘空间。

这个备份方案需要在树莓派上操作。我们需要将 rpi-backup 脚本文件拷贝到树莓派中。从 Github 克隆脚本文件到树莓派上:

1
git clone https://github.com/nanhantianyi/rpi-backup.git

接下来,在树莓派命令行窗口中执行 cd 指令跳转到脚本所在的路径,比如我将脚本文件存放在 pi/Downloads/rpi-backup-master 路径下:

1
cd Downloads/rpi-backup-master

img脚本文件所在的路径

img

▲利用 cd 指令进入到脚本文件所在路径中

现在,在此路径下执行以下指令即可执行「back.sh」脚本来将树莓派系统备份为镜像文件:

1
sudo bash back.sh xxx.img

其中「xxx」为镜像文件名称。所生成的镜像文件将存放在「back.sh」同一路径下。我们可以修改「xxx」内容来指定镜像文件的存放路径和名称,如 Documents/systemBackUp.img 等。恢复系统时,同样只需要将 TF 卡格式化,然后将备份的镜像文件烧录到 TF 卡中即可。

我使用这个方法对我的树莓派的系统进行备份,结果如下:

项目 体积
TF 卡 32 GB
系统已用空间 6.7 GB
备份系统后生成的镜像文件 8.3 GB

可以看到, 镜像文件体积大约是系统已用空间的 1.24 倍,远小于 TF 卡的容量。

这种备份方法并非没有缺点。它所生成的镜像文件是保存 TF 卡中的,如果 TF 卡容量不大,剩余的空间不多,我们需要将硬盘挂载到树莓派上合适的目录下,然后将镜像文件保存到硬盘中。因此,大家根据自己实际情况选择合适自己的系统备份方法吧。