嵌入式Linux启动用microSD卡镜像备份方案及dd命令咨询
嵌入式Linux启动用microSD卡镜像备份方案及dd命令咨询
嘿,这个问题问到点子上了——嵌入式系统的启动SD卡备份真的是刚需,万一哪天卡坏了或者数据崩了,有备份就能直接救回来,省得重新烧写镜像、配置环境的麻烦!
先给你明确答案:完全可以用dd命令来做这个备份,而且这是这类场景下最常用也最靠谱的方法之一。因为dd能做到字节级的完整复制,不仅会复制卡上的所有文件,连分区表、引导扇区、隐藏的启动相关数据这些嵌入式系统启动必需的部分都会原样备份下来,备份好的镜像文件以后可以直接写回新的SD卡,就能得到和原卡一模一样的启动介质。
再给你解释下dd命令到底是什么:
dd是Linux/Unix系统里的老牌工具,本质就是个“数据复制器”,它的核心能力是按指定的块大小读取输入源(可以是磁盘设备、普通文件甚至是管道数据),然后原封不动地写入输出目标。因为它不关心源数据的格式,只做底层的字节复制,所以特别适合用来备份整个存储设备,比如你的SD卡。
下面给你具体的操作步骤和命令,一定要仔细看注意事项,别搞错设备!
备份操作步骤:
- 先确认SD卡的设备名:把SD卡插到电脑上,打开终端输入
lsblk或者fdisk -l,找到对应的设备(比如通常是/dev/sdb,注意别把系统盘/dev/sda搞错了!)。 - 卸载SD卡的挂载分区:如果SD卡的分区自动挂载了,先卸载避免备份时数据不一致,命令是
umount /dev/sdb*(这里的*代表所有分区)。 - 执行备份命令:
dd if=/dev/sdb of=~/embedded_linux_backup.img bs=4M status=progress
if:指定输入源,这里就是你的SD卡设备路径of:指定输出的备份文件路径,这里是存到用户目录下的embedded_linux_backup.imgbs:设置块大小为4MB,比默认的小块复制速度快很多status=progress:让命令实时显示复制进度,不然你会以为终端卡住了
额外小技巧:
如果SD卡容量很大,备份文件占空间,可以用gzip压缩备份,命令是:
dd if=/dev/sdb bs=4M status=progress | gzip > ~/embedded_linux_backup.img.gz
恢复的时候用:
gzip -dc ~/embedded_linux_backup.img.gz | dd of=/dev/sdb bs=4M status=progress
重要提醒:
- 一定要确认好SD卡的设备名,要是把
of参数写成了系统盘的路径(比如/dev/sda),那你的系统盘数据会被直接覆盖,后果不堪设想! - 备份过程中别拔SD卡,也别对SD卡做任何读写操作,不然会导致备份损坏。
总的来说,用dd备份你的嵌入式Linux启动SD卡是非常合适的选择,操作也不复杂,只要注意设备名和操作规范就没问题。
备注:内容来源于stack exchange,提问作者my_question




