Pi4 装了 ubuntu server,如何备份整个 sd 卡然后直接到另一台 Pi4 上使用

2020-12-13 12:00:04 +08:00
 fxrocks

如题,参考网上把 sd 卡挂载,然后用 sudo dd bs=4M if=/dev/mmcblk0 of=/dev/sda1,

插入另一个 pi4,无法启动。。。

有没有其他的方法?有好几个 pi,懒得每个都去安装配置一堆软件

3202 次点击
所在节点    Raspberry Pi
16 条回复
M3ng
2020-12-13 12:03:23 +08:00
dd 存储设备而非分区
ysc3839
2020-12-13 12:10:08 +08:00
> 参考网上把 sd 卡挂载

挂载指的是什么?挂载了文件系统?直接复制数据时不能挂载文件系统,因为随时有可能写入数据进去。
fxrocks
2020-12-13 12:17:49 +08:00
@ysc3839 , 谢谢。你这么一提醒,我仔细看了一下,原来是有挂载新 sd 的话,要先卸载。。。是我搞反了。。。

我参考这个教程
https://www.cirmall.com/bbs/thread-39663-1-1.html
Osk
2020-12-13 12:29:45 +08:00
sudo dd bs=4M if=/dev/mmcblk0 of=/dev/sda

注意: 是 sda 不是 sda1


另外: dd 来拷贝系统是一个糟糕的注意. 不过网上一堆 dd 的教程...
xiaket
2020-12-13 13:45:10 +08:00
话说你是不是应该考虑把你的配置过程写成脚本或者 ansible playbook? 这样 rpi 挂了要重做也简单.
mrcn
2020-12-13 13:45:56 +08:00
@Osk
> dd 来拷贝系统是一个糟糕的主意
为什么这么说呢?如果不用 dd,用什么方式比较合适呢?
CEBBCAT
2020-12-13 13:57:46 +08:00
@Osk 老兄,给出批评意见的同时最好搭配一个建议啊🙏
fxrocks
2020-12-13 14:14:56 +08:00
没有挂载就成功了。谢谢各位。

@Osk,是的,我第二次用了 sda, 复制之前先用了 fdisk -l 查看

麻烦告知一下有什么更好的方法,谢谢。目前复制要 1 个小时。。。用是能用了。
Osk
2020-12-13 14:20:52 +08:00
parted 脚本完成自动分区,可选,手动分区也浪费不了一分钟。
脚本完成 分区格式化 /mkfs 。

对源系统进行调整:树莓派的 botloader 没啥要求,只要文件放 fat32 分区就行,调整下 cmdline.txt 和 /etc/fstab 的挂载设备名即可,由于算是嵌入式设备,root=/dev/mmcblk0pX 等参数可以写死,没问题的。

rsync 等工具真接拷贝系统和 boot 分区的文件即可,注意调整好了 --exclude 的话可以将正在跑的系统拷贝,不过一般不拷贝正在跑的系统。


树莓派就两三个分区:
/boot/firmware 一个分区,256MB 以上的 FAT32 文件系统,内含树莓派的闭源启动代码,内核等,直接拷贝就行,没啥要求。
/ 一个分区,一般 ext4 直接拷。
swap 分区,可选的。



不推荐 dd 是因为:
dd 全盘拷贝会浪费较长时间,无意义的那种,现在的 SD 卡容量大但速度却不快,稳定性也捉急,有较低的概率拷挂。。。

还有就是 dd 的目标盘大小和源盘如果不一致会是个问题,大了还好说,小了搞不好拷过去的会炸。
fxrocks
2020-12-13 14:24:17 +08:00
@xiaket



其实真正使用就 8G,在找方法如何备份这 8G 一个镜像,卡是整个复制的。找到方法再搞成每天自动备份。
fxrocks
2020-12-13 14:25:48 +08:00
@Osk, 感谢指导,我等会儿试试。
spcharc
2020-12-13 14:34:27 +08:00
为什么是 dd ? cp -ax 不好吗?而且 dd 还用错了…
fxrocks
2020-12-13 15:39:00 +08:00
@spcharc,我没怎么接触过 linux,菜鸟一枚,请教 dd 是哪里用错了,谢谢
lh900519
2020-12-13 16:24:53 +08:00
可以参考这个项目,自己调整一下

https://github.com/nanhantianyi/rpi-backup
fxrocks
2020-12-13 19:10:33 +08:00
@lh900519
这个好,我研究一下。谢谢
Hardrain
2020-12-14 00:59:02 +08:00
rsync

参考:
https://wiki.archlinux.org/index.php/Rsync#Full_system_backup

rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup

/path/to/backup 改作新 TF 卡上 rootfs 分区的挂载点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734942

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX