Windows 备份与恢复
这页适合作为“重装前准备与灾难恢复清单”。真正有用的备份,不是把某个命令跑过,而是你真的知道:系统坏了之后,账号、密钥、软件、配置和个人数据能不能按顺序恢复回来。
推荐备份顺序
一个比较稳妥的顺序通常是:
- 先备份个人数据和工作目录
- 再备份浏览器、SSH、Git、编辑器、脚本等环境配置
- 然后导出软件清单与驱动
- 最后再做系统还原点或系统镜像
先保“不可替代的数据”,再保“可重装的软件”。
系统还原点
# 启用系统保护
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 备份文档 — 微软官方
- Scoop — 包管理器
- Winget — 包管理器