macOS 重装记

macOS 重装记

我隔一段时间就会重装一次系统,原因是我的系统中的环境过多,会导致系统中的 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 '{}' +

具体可以参考

https://www.ixiqin.com/2019/05/tool-command-delete-the-current-directory-node_modules-command/

清理完成后,项目目录会从 21G 瘦身至 7.6 G。

备份重要文件

备份 SSH 信息

一个很重要的需要备份的文件,就是我的 SSH 密钥/公钥,我管理服务器都需要它。因此,需要对齐进行备份

cp -R ~/.ssh /Volumes/backup/ssh

这里的 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

备份 dotfiles

我们在 ~ 目录下放置了不少常用的 dotfile,也需要将其备份,以便后续使用,因此,你也可以将这部分文件备份到你自己的磁盘中。

一些值得备份的文件

  • .gitignore
  • .zshrc
  • .gitconfig

你可以通过执行如下命令,找到隐藏的 dotfiles

ls -a | grep "^\."

当然,你也可以选择将其放置在 Github 上,开放自己的 dotfiles 也是一个非常常见的行为。

其他一些没有被 iCloud 备份的文件

我默认开通了 iCloud,因此 Documents 是不需要我进行维护的,不过,还有一些地方是 iCloud 无法覆盖的,因此,需要注意自行备份。他们包括

  • ~/Downloads:如果你和我一样,比较喜欢把 downlods 作为 workspace

还有哪些值得备份的?

  • 比如 Clash X,方便重装后快速联网
  • 比如 1Password 的密码备份文件,方便重装后快速恢复

重装系统

重启 macOS,并在重启后,按下 Command + R,来进入到维护模式,在维护模式中,你可以重装系统。

其他

如果你还有在备份的时候值得注意的,可以一并告诉我。

Reference

macOS 重装记》有2个想法

  1. 程汐

    brew cask 备份的指令有typo,建议修改
    建议制作为shell脚本以便使用,还可以写对应的还原脚本

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注