Featured image of post 我的 Windows 系统重装理 (fèi) 论 (huà) v0.02

我的 Windows 系统重装理 (fèi) 论 (huà) v0.02

虽然只是浮于表面的理论,但我也尽可能提供一些补充说明以方便实践。若需要更深入的说明,建议善用搜索引擎或评论留言

软件管理

Scoop

我个人采用 Scoop 作为软件管理的核心程序。

推荐阅读:《「一行代码」搞定软件安装卸载,用 Scoop 管理你的 Windows 软件

个人日常软件主要来自以下几个 Scoop Buckets:

1
2
3
4
5
6
7
8
scoop bucket add main;
scoop bucket add extras;
scoop bucket add java;
scoop bucket add versions;
scoop bucket add nirsoft;
scoop bucket add dorado https://github.com/chawyehsu/dorado;
scoop bucket add muggle https://github.com/hu3rror/scoop-muggle;
scoop bucket add nerd-fonts https://github.com/matthewjberger/scoop-nerd-fonts;

简单介绍这些 Buckets:

  • main 是 Scoop 安装后自动添加的 Bucket,其中的软件都是命令行软件,即不具备图形界面。
  • extrasdorado 已经囊括了日常使用绝大多数的具备图形界面的软件,而 muggle 则是个人正在维护的私货 Bucket。
  • versions 是测试版、预览版、每夜版软件的 Bucket,危险慎用!
  • nirsoft 是专门用于 NirSoft 网站上的许多(几十个)实用程序。
  • nerd-fonts 是用于安装一些常用的字体的 Bucket,建议在安装时使用以下代码实现全局安装字体
1
2
scoop install gsudo;
sudo scoop install FiraCode-NF -g

在管理软件这件事上,我使用的是 scoop-backup,可实现备份生成具备 自动安装 Scoop 本体 + 自动添加所有 Buckets + 自动安装所有软件 效果的 Powershell 脚本,同时使用系统自带的任务计划程序定时生成脚本保存到 OneDrive 中,即使是换电脑,我只要使用最新备份的 Scoop 软件清单脚本也可以直接在新的系统或电脑上完成所有原来的软件的安装。

其实大多数软件只要是按照正常规范进行开发的,安装包是 exemsizip 等都可以正常被解包的,在这个基础上自己做 Scoop 包进行维护是一个良策。

若只是单纯为了重装系统而非更长远的迁移系统,Scoop 目录可以直接备份到其他盘或移动硬盘中,重装系统时只需要简单添加环境变量,然后 scoop reset * 就完成所有软件的恢复与开始菜单快捷方式的新建。

更详细的恢复还原步骤可以参考这个:《重装系统后如何恢复使用 scoop

也有人喜欢用 Chocolatey,但我个人更倾向于开源社区。

其他便携软件

不是所有软件都可以用 Scoop 进行管理的。部分软件需要额外实现的数据固化(通俗地说就是便携版软件),则采用 PortableApps 或者是 Portapps 中有人维护的包(例如 Thunderbird)。

至于某些破解盗版软件,近几年我已经基本不碰了。我的无用建议是:

  • 若一款软件是日常用的话,在经济水平以内请直接购买。
  • 尽可能学习如何在 GitHubHacker NewsReddit 寻找合适的开源软件替代品。
  • 不要总认为自己是老司机,懂几个什么 52pj、飘雪、423 就觉得是安全的,现在哪怕是所谓的正规软件都内置挖矿,像这些不明来源的软件,木马、勒索、挖矿更是防不胜防的。
  • 哪怕是应急或试用,我个人建议是先用 VirusTotal 过一遍网页在线病毒扫描引擎,再在虚拟机中跑。放在虚拟机的好处是,本机系统的重装不影响虚拟机中的软件内容。当然前提是你在重装系统前记得备份好你的虚拟机文件。

至于我为什么不用 Sandboxie,主要在于 Sandboxie 从原理上并没有实现数据的完全隔离,若单纯按照 Sandboxie 的默认设置项来使用,是不能保障你的个人隐私的。也导致了绝大多数人使用这款软件进行隔离运行实际与在本机中跑没有区别,而且很多不规范的软件在 Sandboxie 虚拟化中会动不动就罢工。

Microsoft Store 应用商店

Microsoft 应用商店的应用实际上是可以用 Windows 新的命令行 winget 包管理进行安装的。搭配 winget export 导出 json 清单后,重装系统后再使用对应的 winget 命令导入安装。

不过按照我的实际体验来说微软的 Winget 除了新系统自带、做包的人比较多以外没有什么优势,目前版本甚至连版本更新忽略都无法做到。因此我更建议使用 Scoop 作为包管理,而应用商店中的软件还是直接用应用商店图形化界面进行手动安装。

数据备份

软件生成的数据备份

绿色软件不等于便携软件!

绿色软件通常是去广告,去驱动后重新打包的软件,但软件在使用过程中本该生成的数据还是会出现在 %APPDATA%%LOCALAPPDATA% 以及 %ProgramData% 这三个文件路径中。

所以即使是使用“绿色软件”,在重装系统之前,不妨手动备份一下上面三个路径中你认为重要的软件的文件夹(可通过文件夹的名字尝试分辨出软件数据隶属,善用搜索引擎),重装系统后把文件夹重新粘贴回去对应的目录路径中,这样可实现保留绝大多数用户数据与痕迹。

注册表备份

别想了,注册表在大多数情况下就是一座💩山。 表面上井井有条的几个注册表大类,有些开发者靠谱一点有迹可循甚至还提供文档说明,但实际上只是不同的开发者用不同的方式拉💩。总之,不要幻想实现注册表备份还原,注册表这东西错改一个数据都不知道还能不能开机🐶

文档与重要数据备份

建议纯文本文档或 dotfile (例如 .gitconfig, .config 等以 . 开头的文件) 都使用 git 进行管理,可同步到 GitHub/Gitlab/Bitbucket 的私有仓库中。推荐阅读:《Yadm:我是如何同步并管理我的 Dotfiles 的?》或《使用 Chezmoi 管理配置文件

这种备份策略一方面实现了备份,另一方面也实现了文档的版本管理。

若被 git 的门槛拦住了,那可考虑使用具备文件版本管理的网盘进行存放备份 (如 OneDrive、Dropbox、坚果云等),可随时回滚到上一个未修改的版本的文档。

若重视安全性,请善用 OpenPGP 加密再上传或者是使用专为网盘同步设计的 Cryptomator 在加密的同时完成上传。

驱动备份

虽然 Windows 10 之后的新系统对于驱动的自动安装已非常完善,但为了稳定性与兼容性多备一手是没有错的。

可考虑使用 DriverStore Explorer 之类的软件手动备份当前正常系统的驱动。必要时可用于驱动的恢复还原。


总结

总的来说,我个人的重装系统的理论是:必须具备强可迁移性

即使硬件、硬盘全坏,依托于 git 与各种网盘的合理备份,在更换一台电脑后也可以恢复 90% 以上的运行环境。

当然在保证可迁移性的前提下,我希望尽可能保持规范整洁,这也是我的强迫症在作祟。

Licensed under CC BY-NC-SA 4.0