树莓派备份和恢复系统

环境

raspbian latest
macOS 10.14

写在前面

该文章是完全备份 不是增量 也不需要用额外的第三方软件。

备份和恢复只需要两行命令 非常简单 且备份文件不会很大

视磁盘使用率。

因为是全盘备份 所以推荐你的TF卡不要太大 否则在还原的时候会耗很长的时间

如果你追求简单的备份 而不在乎恢复时间的话 仍然推荐。

备份

cmd:

sudo dd if=/dev/mmcblk0 | gzip>/home/pi/raspberry.gz

使用Gzip可以大大的压缩未使用的磁盘空间

gzip> 后面跟的是你备份的文件路径

dd if= 后面跟的是你树莓派SD卡的设备挂载点 因为我们是针对全盘备份的 所以这里面包含boot分区和根分区

在操作完成之后把/home/pi/raspberry.gz拷贝出来即可

恢复

注意 这里是用macOS的 有些地方有一些区别 不要在你的linux上直接用

cmd:

sudo gzip -dc raspbian.gz | sudo dd of=/dev/rdisk2 bs=4m

注意:

  • macOS识别到的设备挂载点是disk2 这里为什么要加上r呢?

    /dev/rdisk节点是字符特殊设备,但在BSD意义上是“原始”并且强制块对齐I/O.它们比缓冲区缓存更接近物理磁盘。另一方面,/dev/disk节点是缓冲块特殊设备,主要由内核的文件系统代码使用。

  • bs=4m 这个单位是不是少了大小写?

    bs在MacOS上的单位要小写 而不是大写。

把TF卡插回树莓派 上电 开机。


大功告成

TIPS

最开始的目的就是为了折腾树莓派系统,假设我折腾失败了 再按照原来的方式重新安装一遍raspbian 再装软件 配置设定,显得非常麻烦 且耗时间。

所以建立一个系统备份还原点 我可以在几分钟的时间内让它恢复到折腾前的状态。非常方便。

挂载点

上文中所有的挂载点都是需要自己找的 df -hl,diskutil list
等等 很多命令都可以找到设备挂载点 用你最熟悉的就行。

dd恢复查看进度

我的TF卡是16GB的class10 恢复时间在十分钟左右 在这期间 你可能不知道dd命令执行了多少 因为它没什么输出

先找出dd的PID

然后再用 kill -USR1 {PID} 来显示dd的进度信息(在dd执行的窗口中)

kill 只是发送一个信号 并不是”杀进程”

友好的显示方式:

# 新打开一个 terminal,每秒输出一次进度信息
watch -n 1 pkill -USR1 -x dd

当然还有别的方法(我没试过)

  • dd命令后面加 status=progress

  • pv pv -tpreb /dev/sda1 | dd of=/dev/zero

参考自 dd 命令显示执行进度