再推荐一个备份树莓派系统的脚本

来自 九年吃菜粥 的投稿。

在我们使用树莓派进行学习或者搭建实验环境时经常会把系统玩坏,辛苦配置的开发环境又得重新配置;或者更新某一软件后发现新版本和某些组件不兼容,又无法降级。这个时候我们会想将系统在稳定时进行备份,在系统出现问题后可以很方便的进行恢复。

1、使用 Win32DiskImager 进行备份(Read操作)

这个方法是网上很多教程中写的方法,这个方法的缺点是:只能进行全卡备份,像我使用的内存卡容量是 128G,安装好系统和一些组件后虽然只占用10G左右的空间,用这个方法进行备份的镜像大小将是 128G(虽然我只使用了其中的 10G 的空间),网上很多文章说可以用PiShrink脚本进行压缩裁剪,但我测试后很多系统会裁剪失败,原因是该脚本不支持部分系统的镜像,我自己用 Ubuntu server 和 Manjaro-arm 进行测试都是这个问题,如果你用 16G 以下的小容量 tf 卡,直接用这种方法就行。

2、站内的老备份教程

该方法主要是将系统备份到另一张 tf 卡,如果我们只有一张卡,并且备份只是用于归档,用这个方法就比较鸡肋了。

3、使用 rpi-backup 脚本进行备份

这是我寻求备份方案以来找到的最好的树莓派系统备份解决方案,解决了备份文件体积大,恢复也方便,这个脚本备份文件的体积为 已用空间×1.2,我的系统占用了不到 10G 的空间,备份文件大概是 11G 多一些,这相比于全盘备份的 128G 已经小太多了,在使用7z进行极限压缩后甚至只有 1.7G,进行日常归档备份完全可以接受。

该脚本进行系统恢复时也很方便,将 img 文件像安装系统一样刷入 tf卡 后对分区进行简单拓展后即可。接下来就来演示怎么使用该脚本进行备份。

备份演示

首先 clone 该脚本:

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

然后要安装依赖项,这里我用的是 Manjaro-arm 系统。在 Manjaro 系统中该脚本无法自动安装依赖项,需要运行这行命令 sudo pacman -Sy && pacman -S dosfstools parted multipath-tools rsync 来安装依赖。

如果你是用 apt 进行安装软件的系统,可以跳过这一步,该脚本会自动安装依赖项。

然后运行

sudo ./back.sh youImageName.img

该脚本就会开始备份,如果不指定文件名则会自动命名。

如果你的内存卡剩余空间不够的话就挂载 U 盘,将 img 直接保存在 U 盘中,要注意U盘务必挂载到 /media 目录下,不要挂载到 /mnt,因为脚本会对 /mnt 目录进行备份操作,会导致递归性的备份,总之就是不要挂载到 /mnt 目录,切记!

脚本运行结束后就得到了备份镜像。

备份的恢复

备份镜像恢复可以直接用烧录软件直接烧录,这里我使用的是 Etcher,我也推荐大家使用这个软件,站内有这个软件的文章:使用 Etcher 给 SD 卡安装树莓派系统,界面简洁明了,选择镜像,选择要刷入的磁盘,Flash!

在烧录完毕后不要着急,我们还要一项操作没有做,打开 DiskGenius 后查看 tf 卡的分区可以看到有一部分空闲分区没有被分配。

这会导致进入系统后可用空间变少,在这里我直接用 DiskGenius 将空闲分区分配给 root 分区,这样不用在进入系统后做其他操作。

也可以进入系统后执行 git clone 来的 resize.sh 脚本进行扩容操作:sudo resize.sh,脚本运行完毕后会自动重启,两个步骤效果一样(但在部分系统会无法运行,还是推荐用 DiskGenius 弄好再开机)。

最后也不要忘了给该项目点一个 Star。