全部文章

Windows 备份与恢复

系统备份、驱动备份、软件清单导出与重装后快速恢复方案

目录 23 节

Windows 备份与恢复

这页适合作为“重装前准备与灾难恢复清单”。真正有用的备份,不是把某个命令跑过,而是你真的知道:系统坏了之后,账号、密钥、软件、配置和个人数据能不能按顺序恢复回来。

推荐备份顺序

一个比较稳妥的顺序通常是:

  1. 先备份个人数据和工作目录
  2. 再备份浏览器、SSH、Git、编辑器、脚本等环境配置
  3. 然后导出软件清单与驱动
  4. 最后再做系统还原点或系统镜像

先保“不可替代的数据”,再保“可重装的软件”。

系统还原点

# 启用系统保护
Enable-ComputerRestore -Drive "C:\"

# 创建还原点
Checkpoint-Computer -Description "安装前备份" -RestorePointType MODIFY_SETTINGS

# 查看还原点
Get-ComputerRestorePoint

系统镜像备份

# 创建系统镜像(需管理员)
wbAdmin start backup -backupTarget:D: -include:C: -allCritical -quiet

或使用 设置 → 系统 → 恢复 → 高级启动 → 系统映像恢复。

驱动备份

# 导出所有第三方驱动
Export-WindowsDriver -Online -Destination "D:\DriverBackup"

# 重装后恢复
pnputil /add-driver "D:\DriverBackup\*.inf" /subdirs /install

软件清单

Winget 导出

# 导出已安装软件列表
winget export -o apps.json

# 新机器导入
winget import -i apps.json --accept-package-agreements --accept-source-agreements

Scoop 导出

scoop export > scoop-apps.json

手动记录

# 列出所有已安装程序
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Select-Object DisplayName, DisplayVersion, Publisher |
  Sort-Object DisplayName |
  Export-Csv -Path installed-apps.csv -NoTypeInformation

浏览器数据

书签导出

  • Chrome:书签管理器 → 右上角 ⋮ → 导出书签
  • Firefox:书签 → 管理书签 → 导入和备份 → 导出为 HTML
  • Edge:同 Chrome

扩展列表

手动记录或使用同步功能(登录浏览器账号自动同步)。

开发环境备份

VS Code

# 导出扩展列表
code --list-extensions > vscode-extensions.txt

# 恢复
Get-Content vscode-extensions.txt | ForEach-Object { code --install-extension $_ }

设置通过 Settings Sync 自动同步(登录 GitHub/Microsoft 账号)。

SSH 密钥

# 备份
Copy-Item -Recurse "$env:USERPROFILE\.ssh" "D:\Backup\.ssh"

Git 配置

Copy-Item "$env:USERPROFILE\.gitconfig" "D:\Backup\.gitconfig"

重装后快速恢复脚本

# restore.ps1
Write-Host "=== 恢复开发环境 ===" -ForegroundColor Cyan

# 1. 安装 Scoop
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
scoop bucket add extras

# 2. 安装基础工具
$scoopApps = @("git", "7zip", "ripgrep", "fd", "fzf", "bat", "delta", "lazygit")
foreach ($app in $scoopApps) { scoop install $app }

# 3. Winget 安装
$wingetApps = @(
    "Microsoft.VisualStudioCode",
    "Docker.DockerDesktop",
    "Schniz.fnm",
    "JanDeDobbeleer.OhMyPosh",
    "Rustlang.Rustup",
    "Python.Python.3.12",
    "astral-sh.uv"
)
foreach ($app in $wingetApps) {
    winget install $app --accept-package-agreements --accept-source-agreements
}

# 4. 恢复 VS Code 扩展
if (Test-Path "vscode-extensions.txt") {
    Get-Content vscode-extensions.txt | ForEach-Object { code --install-extension $_ }
}

Write-Host "=== 恢复完成 ===" -ForegroundColor Green

建议额外备份的内容

除了系统和应用,下面这些也很值得单独留一份:

  • 密码管理器导出文件或恢复方式说明
  • 双因素认证恢复码
  • 云盘同步目录是否完整
  • 浏览器书签、插件、配置同步状态
  • 本地虚拟机、容器数据、数据库文件

很多人重装后最花时间的,不是装软件,而是把这些“零碎但关键”的个人环境重新拼回来。

恢复前检查

  • 备份介质是否真的能读
  • 恢复脚本是否在新机器能执行
  • 关键账号(GitHub、邮箱、云盘)是否能正常登录
  • SSH 密钥、公钥登记和 Git 配置是否完整

如果条件允许,最好做一次小规模恢复演练,而不是等出问题时第一次验证。

常见问题

明明做了备份,重装后还是缺东西

这通常说明备份只覆盖了“软件列表”,没覆盖“配置和数据”。尤其是:

  • .ssh
  • .gitconfig
  • VS Code 扩展和设置
  • 浏览器同步状态
  • 下载目录、脚本目录、自建工具目录

系统镜像太大,不想每次都做

可以把策略拆成两层:

  • 高频:文档、代码、配置、密钥、软件清单
  • 低频:完整系统镜像

这样既能降低备份成本,又能确保关键数据不丢。

延伸阅读

参考链接

阅读建议
  • - 先读标题和摘要,再结合目录决定从哪个章节开始精读。
  • - 看到具体命令、配置或步骤时,尽量在自己的环境里同步验证。
  • - Windows 相关文档通常要留意管理员权限、终端类型和路径差异。
适合谁看
  • - 希望把零散经验整理成长期可复用工作流的人
  • - 以 Windows 为主力系统,希望提升稳定性和效率的用户
  • - 希望阅读时顺手建立自己的操作清单或收藏体系的人
执行前检查
  • - 先浏览标题、摘要和目录,带着问题阅读会更高效
  • - 确认是否需要管理员终端,并在高风险操作前创建还原点或备份
  • - 如果页面里提到相关文档,尽量一起打开对照,效果通常更完整
同类内容
← 上一篇Vue 3 / Nuxt 开发笔记