我隔一段时间就会重装一次系统,原因是我的系统中的环境过多,会导致系统中的 PATH 紊乱。因此,当出现系统无法正常工作的时候,我就会考虑重装一次系统。
重装系统需要备份一些东西,做一些处理,写一篇博客记录一下,也方便我自己使用。
清理无用文件
1. 清理包管理器安装的依赖文件
我经常会使用 Python、Node.js 来写一些脚本,这些脚本会依赖 npm 生态下的 package。这些 package 可以基于 npm 下载又或者是类似 python ,提供了 requirements 文件的项目,可以使用命令快速恢复环境,因此,我会推荐将这些可以快速恢复的文件,直接清理掉,以加快安装的速度。
具体包括:
- Node.js 的 Node Modules
- Python 的 venv
- PHP 的 vendor
这里我会使用这样的命令来进行删除
下面这段代码执行时不会确认,因此,如果修改,请再三确认再执行,避免酿成大错。
find . -name "node_modules" -exec rm -rf '{}' +
Code language: JavaScript (javascript)
具体可以参考
清理完成后,项目目录会从 21G 瘦身至 7.6 G。
备份重要文件
备份 SSH 信息
一个很重要的需要备份的文件,就是我的 SSH 密钥/公钥,我管理服务器都需要它。因此,需要对齐进行备份
cp -R ~/.ssh /Volumes/backup/ssh
Code language: JavaScript (javascript)
这里的 backup 是我的单独的磁盘,用来备份资料的。
备份项目资料
我会把所有涉及到开发的资料都放在一个文件夹里,因此,在处理备份的时候,我只需要把大的文件夹备份即可解决项目文件的存储问题。同时,因为不删除 .git 记录,还可以保留数据的编辑记录。
tar -zcvf /Volumes/backup/project.tar.gz ~/Developer
备份 MySQL 数据库
我使用 homebrew 安装了 MySQL ,因此,也需要把 MySQL 数据备份出来,以免后续搭建开发环境成本太高。执行命令,即可将所有数据库备份。
mysqldump -uroot -p --all-databases --result-file=dump.sql
执行完命令,数据就会备份在当前目录下的 dump.sql 文件,接下来你只需要将其移动到你的备份文件中。
备份软件列表
备份软件列表,以方便后续可以方便的进行恢复,以免遗漏。当然,你也可以选择用到什么安装什么。但对于一些比较基础的、常用的,我还是比较喜欢重装完就安装,省的用到的时候现场装。
软件列表需要备份的有三处:
- /Applications
- brew list
- brew cask list
需要做的就是将这些信息打印出来,并导出到 txt 文件,方便后续恢复。
ls /Applications > applications.txt
brew list > brew.txt
brew list --cask > brew-cask.txt
Code language: PHP (php)
备份 dotfiles
我们在 ~ 目录下放置了不少常用的 dotfile,也需要将其备份,以便后续使用,因此,你也可以将这部分文件备份到你自己的磁盘中。
一些值得备份的文件
.gitignore
.zshrc
.gitconfig
你可以通过执行如下命令,找到隐藏的 dotfiles
ls -a | grep "^\."
Code language: JavaScript (javascript)
当然,你也可以选择将其放置在 Github 上,开放自己的 dotfiles 也是一个非常常见的行为。
其他一些没有被 iCloud 备份的文件
我默认开通了 iCloud,因此 Documents 是不需要我进行维护的,不过,还有一些地方是 iCloud 无法覆盖的,因此,需要注意自行备份。他们包括
~/Downloads
:如果你和我一样,比较喜欢把 downlods 作为 workspace
还有哪些值得备份的?
- 比如 Clash X,方便重装后快速联网
- 比如 1Password 的密码备份文件,方便重装后快速恢复
重装系统
重启 macOS,并在重启后,按下 Command + R,来进入到维护模式,在维护模式中,你可以重装系统。
其他
如果你还有在备份的时候值得注意的,可以一并告诉我。
brew cask 备份的指令有typo,建议修改
建议制作为shell脚本以便使用,还可以写对应的还原脚本
已经更新~