问题的提出:

树莓派各种版本系统,各种软件,各种更新...总之最简单的备份方法就是使用镜像备份,即将树莓派的SD卡(硬盘)通过工具(如:Win32DiskImager)整个备份,下次需要使用的时候,直接将备份文件再写入SD卡,简单粗暴实用。


ubantu arm镜像guest has not ubuntu镜像文件img_树莓派4b ros镜像 网盘


需要备份情况:

  • 好不容易搞好了项目,保存一下留个纪念
  • 朋友也想用最简单的方法实现我的项目,类似直接把SD卡邮寄给他
  • 不想每次都更新系统
  • 好不容易配置好的环境
  • ...不限于上述情况,日后再总结

那么问题就来了:现在市场常规容量SD卡16G,每个树莓派工程都用传统方式备份,我有那个时间,电脑硬盘也没那么多空间呀,我电脑有那么大空间,朋友也不见得有...还有文件(镜像)传输的问题。

总结:镜像太大,存储,备份,还原,传输都不方便

我将这个需求整理了一下,然后发到群里,大牛漂移菌很快回复,并给予了耐心详细的指导。下面我把方法简单总结一下,方便大家学习使用:

先说明一点:这个方法虽然将镜像的大小缩小,但稍微有点麻烦。大家自己评估哈

项目地址:https://github.com/Drewsif/PiShrink

需要工具:linux系统电脑或虚拟机,电脑需要硬盘空间较多,SD卡读卡器啥的就不多说了

总步骤:

  1. 下载(安装)脚本
  2. 给SD卡做镜像
  3. 将镜像压缩(其实可能不是压缩,细节不用管,压缩好理解)

详细步骤:下边都是在linux环境下进行的

下载(安装)脚本

参考项目https://github.com/Drewsif/PiShrink中的描述


ubantu arm镜像guest has not ubuntu镜像文件img_树莓派_02


逐一运行红框中的命令,第一条命令如果提示错误,可以从github的对应文件名的文档中复制到u盘里,然后复制到linux系统中。

给SD卡做镜像

先用lsblk命令查看SD卡的盘符,如下图所示,先不插SD卡,查询一下,插入SD卡再查询一下,多出来的就是SD卡


ubantu arm镜像guest has not ubuntu镜像文件img_ubuntu系统备份成iso镜像_03


盘符即为sdb

用DD命令复制SD卡:(复制下边的整行命令,修改其中的sdb为你的SD卡盘符,rpi.img可以不改为你要存储的文件名)

sudo dd if=/dev/sdb of=./rpi.img bs=8M

将镜像压缩

命令:

sudo pishrink.sh -s rpi.img newpi.img

漫长的等待之后就能看到结果了,如下图所示,将32G的存储卡镜像变为了6.2G


ubantu arm镜像guest has not ubuntu镜像文件img_盘符_04