拓冰建站拓冰建站
首页 / 资讯中心 / 正文

树莓派SD卡备份与恢复:用Win32DiskImager制作完整镜像

树莓派玩久了几乎每个人都会遇到一次 sudo rm -rf 手滑或者 SD 卡读到一半直接罢工的时刻。用 Win32DiskImager 把整张 SD 卡备份成一个镜像文件是当下最稳妥、门槛也最低的抢救方案。这篇文章写给所有被系统崩溃、改装失败、卡在开机动画反复折磨过的人从备份到恢复一次讲透顺便把我这些年踩过的坑也一起交代了。1. 为什么树莓派SD卡备份是刚需1.1 一次手滑命令止损成本有多高很多新手对备份这件事不以为然觉得反正系统坏了重新烧录就完事了。这个想法在系统刚装好、软件基本没配的时候确实没错但等你在树莓派上装好了环境、写好了脚本、调通了摄像头甚至部署了小服务再重新来一遍就不是一两个小时的事了。我见过一个朋友辛辛苦苦搭了一个自动签到服务跑了三个月结果一次sudo rm -rf误操作把整个 home 目录连带一堆配置文件全删了当场人都是麻的。这类事故的本质在于SD 卡上的所有数据是连在一起的删一个文件可能只是起点文件系统损坏、分区表被覆盖才是真正致命的。系统层面所谓的“重装系统”只能保住硬件保不住你的数据、配置和折腾成果。所以我的观点一直很明确树莓派这类 SD 卡启动设备全卡镜像才是真正意义上的“完整备份”因为它连引导区、分区表、隐藏分区一起打包恢复出来就是当时的样子一点都不差。1.2 Win32DiskImager 为什么是入门首选市面上能给 SD 卡做镜像的工具不少但 Win32DiskImager 直到今天依然是入门首选。原因很朴素它是一个 Windows 下的绿色小工具安装包极小界面就一个框不需要命令行不需要理解dd的参数只要会选盘符就够了。它和 balenaEtcher、USB Image Tool 这类工具不一样的地方在于Win32DiskImager 既能“写”也能“读”。balenaEtcher 主要是把镜像写入 SD 卡而 Win32DiskImager 的 Read 功能可以直接把 SD 卡“读成”一个.img镜像文件等于一个工具同时干了两件事备份和恢复都不用换软件。再者和再生龙Clonezilla这类专业备份工具相比Win32DiskImager 的定位更像是“傻瓜式整卡复制”不挑分区格式不做增量处理把整张卡按扇区读出来。缺点是镜像文件大、速度一般但优点是稳几乎不会遇到奇奇怪怪的兼容性问题。篇幅有限这里先给个对比表后面有时间我再单独展开。工具系统平台备份方式上手难度适合场景Win32DiskImagerWindows整卡镜像极低新手/应急备份/快速还原dd 命令Linux/macOS整卡镜像中熟悉命令行、需要脚本化balenaEtcherWindows/macOS/Linux仅写入极低日常烧录系统Clonezilla 再生龙独立启动环境分区或整盘克隆高批量机房部署/增量备份2. 备份前的准备工作硬件软件和最容易翻车的点2.1 需要的硬件和软件清单开始操作之前先把东西备齐。硬件方面最核心的是读卡器。千万别用树莓派自带的读卡功能——树莓派自己是启动设备你不能一边让它跑系统一边读它自己的卡逻辑上就行不通。正确做法是把 SD 卡取出来插到 Windows 电脑上的 USB 读卡器里。读卡器我建议用支持 UHS-I 或 UHS-II 的不要用那种几块钱的杂牌读卡器。全量读取一张 32GB 的卡普通读卡器可能要 20 到 30 分钟快一点的读卡器十分钟内搞定差距很大。另外电脑的 USB 口也尽量插主板背面的原生口尤其是台式机前置 USB 供电不稳最容易导致读取中断。软件方面去 Win32DiskImager 的官方仓库或可信下载站拿最新版就行不需要安装解压出来是一个 exe。另外建议顺手准备一个 7-Zip后面压缩镜像文件要用。还有一个小工具叫 SD Card Formatter是 SD 协会出的官方格式化工具后面遇到写保护或者卡识别异常时会用到建议提前下载好备用。2.2 盘符识别选错了就是给电脑硬盘做镜像这是整个备份流程中最危险的一步我每次写教程都要把这段放到最前因为真的有人在这里翻过车。Win32DiskImager 的界面里有“Device”下拉框里面列的是你电脑上的所有可移动磁盘注意是磁盘不是分区。很多人在这里会犯一个致命错误他们看盘符选了一个显示为“E盘”或者“F盘”的结果那个其实是一个移动硬盘分区甚至更惨就是电脑本身的系统盘。一旦用 Read 功能读取这个被选错的设备Win32DiskImager 会把整个硬盘读成一个镜像文件——还不会立刻产生破坏但如果你选错的是 Write 方向写入的瞬间整块硬盘数据直接清空完全没有后悔药。正确做法是先在 Windows 的磁盘管理里确认 SD 卡的磁盘编号。右键“此电脑”选“管理”再进“磁盘管理”看下方列表里面哪一块磁盘显示“可移动”容量和你 SD 卡一致大概率就是它。记住这个磁盘编号然后在 Win32DiskImager 的 Device 里选择对应的\\.\PhysicalDriveN不要只凭盘符 F 或 G 就做决定。这一分钟的时间能省掉你后面几天的哭。2.3 树莓派关机与SD卡安全弹出树莓派关机和 Windows 关机不太一样直接拔电大概率会损坏 SD 卡上的文件系统。在命令行里执行sudo shutdown -h now等板子上的绿灯不再闪烁维持一两秒常亮或者熄灭再拔电源。注意有些系统关机后电源指示灯依然亮着不要看红灯要看 ACT 绿灯。实在判断不了就等关机命令执行完一分钟以上再断电稳妥。把卡从树莓派里取出来也有讲究SD 卡和 TF 卡在物理结构上不同树莓派用的一般是 TF 卡也就是带卡套的 microSD卡套是那个大卡读卡器一般也插大卡。取出时注意不要用手指去碰金手指区域静电可能会损坏卡。插回读卡器时同样要插到底有些读卡器接触不良会导致读取到一半掉盘这也是备份失败的高频原因。3. 用Win32DiskImager做全量备份一步步操作3.1 打开软件与设置镜像路径Win32DiskImager 解压后右键 exe 选择“以管理员身份运行”。这一步不能省访问磁盘底层扇区需要管理员权限不开的话软件会直接报错或者根本扫不到 SD 卡。软件界面很简单上面一栏是镜像文件路径中间是设备下拉框右边是 Read 和 Write 两个大按钮。先说备份也就是 Read 方向。在镜像文件路径那一栏点击文件夹图标选择一个你准备存放镜像的目录注意这个目录不要放在要备份的 SD 卡上——这不难理解但确实有人这么干过结果备份读不出来因为同一个卡同时在被读和写。文件名的格式我建议写得有辨识度比如raspberrypi_backup_20250610.img把系统版本、日期、用途都标清楚。等你手上有十几个镜像文件的时候就知道这个习惯有多重要了否则过一个月你自己都分不清哪个是哪个。3.2 选择设备盘符并读取在 Device 下拉框里选中 SD 卡对应的\\.\PhysicalDriveN这个编号就是我们刚才在磁盘管理里确认过的那一个。选好之后建议再核对一遍磁盘管理里显示的容量、可移动设备标识和这里点击下拉框时显示的信息要一致。确认无误点 Read软件会开始逐扇区读取 SD 卡并写入.img文件。整个过程中你会看到一个进度条同时下面显示已读取的扇区数。这个阶段最重要的事情就是不要碰读卡器不要拔 USB不要让电脑进入睡眠状态。实测下来备份一张 32GB 的卡大约需要 10 到 30 分钟具体取决于读卡器速度。如果中途进度条卡住不动先等个两三分钟有些读卡器在读写大块数据时会短暂停顿属于正常现象。如果等了很久还是不动建议放弃重来换一个 USB 接口再试强行拔掉继续上次操作基本都会产生损坏的镜像。3.3 备份后的镜像文件检查与压缩读取完成后你会拿到一个体积很大的.img文件大小接近 SD 卡的实际容量。比如标称 32GB 的卡读出来可能是 29GB 到 30GB这是因为厂商的容量算法和实际可用空间换算存在差异属于正常现象不用慌。接下来做两件事。第一件是校验哈希以防备份文件在落盘过程中出错。Windows 的 PowerShell 里可以直接算Get-FileHash -Path D:\backup\raspberrypi_backup_20250610.img -Algorithm SHA256算出来的那一长串哈希值建议复制到记事本里和镜像文件放一起。等有一天你要恢复时可以再算一次对比一致就说明这个镜像文件没问题放心使用。第二件是压缩。镜像文件里其实有大量的空扇区压缩率通常很可观。用 7-Zip 右键选择“添加到压缩包”压缩格式选 7z压缩级别选“极限”实测一张 32GB 的卡镜像 30GB压缩后可能变成 6GB 到 10GB。压缩后的文件可以放到网盘或者 NAS 上做异地备份但注意用的时候需要先解压出完整.img文件Win32DiskImager 不认 7z 格式。4. 最关键的恢复教程把SD卡恢复到可启动状态4.1 恢复前检查盘符、容量、格式备份是为了有一天能恢复所以恢复这部分才是整个流程的终点。真正到你需要恢复的那一天大概率常态是树莓派系统已经进不去了或者 SD 卡已经彻底罢工。这时候一定注意别着急找新卡就开始写先做三个检查。第一确认目标 SD 卡容量不能小于镜像文件所对应的原始卡容量。镜像文件是整卡镜像包含分区表和引导信息如果你的新卡比旧卡小写入时会出现空间不足或缺失尾部区块的问题极大概率无法启动。第二打开磁盘管理确认目标 SD 卡的磁盘编号看看盘符到底对应的是不是新卡。恢复操作比备份更危险因为 Write 按钮按下的瞬间整个目标磁盘会被覆盖没有任何二次确认弹窗。第三尽量不要预先格式化 SD 卡。Win32DiskImager 是按扇区写入的它不在意目标卡里原本是什么文件系统直接会覆盖掉所有内容。预先格式化相当于多此一举还容易在格式化工具里手滑选错盘。4.2 使用Write写入镜像的完整操作写入前把镜像文件从压缩包里解压出来放在电脑本地磁盘上不要放在要写入的 SD 卡里也不要用中文路径Win32DiskImager 对中文路径的处理偶尔会出幺蛾子比如提示无法打开文件。打开 Win32DiskImager在镜像文件路径里选择.img文件在 Device 下拉框里选中你要写入的 SD 卡对应的磁盘编号。检查两遍再检查第二遍然后点 Write。写入过程比备份还要久因为不仅要把数据写进去很多读卡器在写入时还要做擦除操作速度会明显慢于读取。这个过程千万不要中断一旦中途断电或者拔卡这张 SD 卡的存储控制器可能会出现异常状态也就是你在网上经常看到人说的“SD 卡内部寄存器锁死”或者“写保护”问题。后面我会专门讲这个。写入完成后软件可能会提示你是否要格式化该磁盘一定要选“否”。Win32DiskImager 已经完成了整卡写入你不需要、也不应该再对它做格式化操作。直接把卡从读卡器里弹出插入树莓派接通电源等待启动即可。4.3 恢复到更大容量SD卡的扩容处理如果你是从 16GB 的旧卡换到 32GB 的新卡写完镜像后会发现一个现象树莓派系统能启动查看磁盘空间时容量还是旧的 16GB。这是因为 Win32DiskImager 是整卡镜像分区表是按照旧卡的布局写入的新卡多出来的空间根本没有被使用。解决办法是在树莓派启动后执行sudo raspi-config进入“Advanced Options”选择“Expand Filesystem”它会自动把根分区扩展到 SD 卡剩余的全部空间。退出后重启再执行df -h就能看到完整容量了。如果你用的是 Ubuntu Server不依赖 raspi-config可以手动用growpart工具来扩容。先查一下根分区在哪个设备上一般是/dev/mmcblk0p2然后执行sudo growpart /dev/mmcblk0 2 sudo resize2fs /dev/mmcblk0p2第一行扩展分区表第二行扩展文件系统顺序不能反。执行完后用df -h验证是否生效。4.4 恢复后首次启动建议恢复了镜像不代表万事大吉首次启动时我建议你做三件小事。第一确认时间。树莓派没有板载时钟时间同步依赖网络如果断网运行过一段时间系统时间可能不准会影响日志记录和一些依赖时间的服务。第二检查关键服务是否自动启动成功。很多同学备份前是能正常运行的系统恢复后却出现某个服务起不来的情况多半是 SD 卡换了之后硬件相关配置变了比如蓝牙地址、序列号识别等。排查命令是systemctl --failed第三验证一下磁盘是否真的能正常读写。可以往用户目录下写一个大文件再删掉然后执行dmesg | tail看看有没有 I/O 报错。这一步能提前暴露 SD 卡与读卡器接触不良、镜像写入时产生的坏块等问题。5. 常见故障排查我这些年踩过的坑5.1 SD卡显示写保护或锁死怎么办先说一个很多新手不知道的点SD 卡本身就有物理写保护开关但那是针对标准尺寸 SD 卡的microSD 卡或 TF 卡没有这个开关。如果你用的是卡套把卡套侧面的锁拨到非锁定位置这问题比较容易排查。比较隐蔽的是“SD 卡内部寄存器锁死”这种状态。典型表现是该卡插到任何读卡器都被识别为只读无法删除文件无法格式化甚至 Windows 提示“磁盘受写保护”。这种情况常发生在写入中断、劣质读卡器供电不稳或者卡本身寿命耗尽之后。SD 卡内部有一个控制用的寄存器一旦某些标志位被异常置位主控芯片会拒绝写入命令。尝试处理的办法是先用 SD Card Formatter 执行“覆写格式”模式选择 Overwrite Format它会往卡里全量写入 0 和 1对部分软性锁死状态有用。如果无效可以上网搜一下对应主控的量产工具做低格但说实话普通用户折腾量产工具成功率极低我的经验是直接换卡。SD 卡本身是耗材尤其树莓派这种频繁读写的场景工作环境恶劣一点的寿命一两年就到头了。千万不要在重要的卡上反复测试修复方法数据安全永远比那几十块钱重要。5.2 备份到一半中断或文件损坏如何处理备份中断是最高频的问题原因五花八门读卡器接触不良、电脑 USB 供电波动、Win32DiskImager 本身崩溃、镜像文件落盘时空间不够等。遇到这种情况先别急着怪软件先检查是不是读卡器的问题。我的习惯是备一个专门给树莓派 SD 卡用的独立读卡器不和其他设备混用这样能减少 USB 供电不稳的概率。中断后产生的.img文件理论上不完整不要用它来恢复系统。重新备份即可但在重新开始之前可以先在 Windows 的磁盘管理里看到 SD 卡状态是否正常。最常见的问题是中断后 SD 卡的容量显示变小比如 32GB 的卡只剩 2GB 可用这一般是 Windows 自动做的分区表修复导致的。解决办法是用 SD Card Formatter 全卡格式化恢复完整容量后再重新备份。还有一种隐蔽的“假成功”情况备份进度条 100% 走完但镜像文件也无法在别的软件中打开。这种情况大概率是目标磁盘在备份过程中产生了坏扇区。处理思路是换一个读卡器再加一个 USB 接口隔离器或者在备份前先用 SD Card Formatter 做一次“逻辑格式化”把坏块剔除出映射表再开始备份。5.3 写入成功后树莓派无法开机这是恢复操作后最打击人的结果明明写入成功了上电却连开机画面都没有或者只有一个闪烁的光标。先说最常见的原因——新 SD 卡和旧镜像里的分区布局对不上。比如镜像来自一个 32GB 的卡你写入一个 16GB 的卡那肯定无法启动。这个在 4.1 里强调过这里再重复一次因为真的有人会拿小卡写大镜像。第二个原因是写入时损坏了引导区。Win32DiskImager 写入完成后不提供自动校验功能所以如果镜像文件在解压过程中出现错误或者读卡器写入质量不佳写入结果就是损坏的。解决办法是写入后用 Win32DiskImager 再读一次刚写出的 SD 卡得到一个新的镜像用哈希工具和原始镜像对比一致性。虽然这样要多花时间但能保证百分之百可靠。第三个原因可能是树莓派本身启动模式设置问题。一些玩家之前在/boot/config.txt里改过 GPU 内存分配或者关掉了某些外设恢复后配置找不到对应硬件会卡在引导阶段。这种情况建议接上 HDMI 和键盘观察屏幕输出看停在哪个位置。如果能看到 kernel panic说明镜像写入本身没问题是系统配置层面的故障进救援模式修改即可。5.4 备份文件过大或分区丢失去哪里找很多同学看到备份出来的.img文件比自己实际使用的数据大很多会怀疑是不是备份错了。其实是正常的因为 Win32DiskImager 做的是整卡镜像它会包含文件系统里的空闲扇区而不是像文件复制那样只拷贝有效数据。这也是它可靠的原因之一。如果你确实想让备份文件“瘦身”建议用 3.3 节的方法做高质量压缩而不是在备份时手工修改扇区范围。Win32DiskImager 没有块级别裁剪功能强行改不现实。有些人会用 Linux 下的pishrink脚本先把镜像缩小再压缩存档这在大量备份场景下很有用但操作复杂度和出错概率也会上升新手暂时不需要碰。至于“分区丢失”的说法其实不是一个精确的概念。如果你用磁盘管理打开 SD 卡发现它变成了不可识别的 RAW 分区这通常是文件系统损坏而不是分区表丢失。常见补救办法是用testdisk扫描分区表并恢复引导扇区。但也要提醒一句不要在没有完整备份的情况下随便做修复操作修坏了连恢复的机会都没有。6. 进阶玩法备份的更高境界6.1 Linux/macOS下的dd与pv全盘备份Win32DiskImager 只能在 Windows 上用如果你主力机是 Linux 或者 macOS也可以用命令行完成同样的事情。Linux 下的核心工具是dd它和 Win32DiskImager 原理一模一样也是按扇区拷贝整张 SD 卡。先确认 SD 卡的设备名。插入 SD 卡后执行lsblk一般会看到/dev/sdb或者带 mmcblk 前缀的设备。然后执行全盘备份sudo dd if/dev/sdb of~/raspberrypi_backup_$(date %Y%m%d).img bs4M statusprogressif指定输入设备of指定输出文件bs4M是每次读写 4MB这个值对性能影响很大设太小会慢设太大在某些机器上反而容易出错。statusprogress可以直接显示进度省得干等。如果想让过程更直观可以把dd的输出接到pv命令上sudo dd if/dev/sdb bs4M | pv -s $(sudo blockdev --getsize64 /dev/sdb) | sudo dd of~/backup.img bs4M恢复时反过来执行sudo dd if~/backup.img of/dev/sdb bs4M statusprogress这里再敲一次警钟dd的of指向的设备一定要反复确认写错了就是把数据直接抹掉比 Windows 下选错盘符还要干脆。6.2 定期自动备份的思路手动备份有个问题忘记了就相当于没有。尤其树莓派这类长期运行的小主机很多时候你自己都忘了上一次备份是什么时候。想想看当系统真的崩溃时你拿出来的镜像可能是三个月前的而最近一个月的配置改动和新增数据全都没了。自动化备份的思路很简单如果你有另一台 Linux 服务器或者一台常开的电脑可以写一个脚本定期执行dd或者rsync方式的备份。但要注意dd全量备份运行时会占用大量 I/O不适合在树莓派本身运行期间做因为一边写入镜像一边持续读写 SD 卡很可能把系统自己搞挂。更稳妥的方式是利用cron定时执行shutdown -h now并在电脑端定时运行备份脚本配合 Wake-on-LAN 或者智能插座把树莓派重新唤起来。如果想在线备份不想停机那用文件级同步方案更合适比如rsync把重要目录同步到 NAS 或者远程服务器。但文件级同步无法覆盖整个系统不能让你从一张全新的 SD 卡上直接恢复所以我的建议是两者结合日常用rsync同步关键数据间隔一个月做一次全量镜像归档。这样既有粒度又有底线。6.3 我的备份节奏与最终建议按我自己的习惯新系统调好之后马上做一次“干净镜像”这个镜像相当于黄金底稿以后系统折腾坏了第一件事就是回到这个版本重新配置业务而不是从零装环境。之后每完成一次大的软件变更、驱动修改或环境部署就再做一次当前镜像命名里带好日期和版本备注。这样的节奏不算频繁但每次恢复时都有近期的可用版本损失控制在可接受范围内。在日常维护中我还会把/etc下的关键配置、数据库导出文件等通过rsync定时同步到内网 NAS。毕竟镜像文件恢复起来是整个系统但很多时候你只需要找回来一个写坏的配置文件文件级备份就能解决问题何必动用全量镜像。这篇文章介绍的都是我自己反复验证过的方法尤其 Win32DiskImager 这条路帮我在无数次树莓派崩溃中保住了数据。实际操作中你会发现备份这件事真的不难难的是在系统一切正常时想到去做。趁现在板子还能开机去把第一次备份做了这个习惯会在未来某天狠狠地回报你。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门