树莓派备份和恢复系统
环境
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 命令显示执行进度