# macOS 重装记

- Link: https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/
- Published: 2020-11-01T21:30:18+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#)

 * [清理无用文件](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e6%b8%85%e7%90%86%e6%97%a0%e7%94%a8%e6%96%87%e4%bb%b6)
    - [1. 清理包管理器安装的依赖文件](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#1_%e6%b8%85%e7%90%86%e5%8c%85%e7%ae%a1%e7%90%86%e5%99%a8%e5%ae%89%e8%a3%85%e7%9a%84%e4%be%9d%e8%b5%96%e6%96%87%e4%bb%b6)
 * [备份重要文件](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd%e9%87%8d%e8%a6%81%e6%96%87%e4%bb%b6)
    - [备份 SSH 信息](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd_ssh_%e4%bf%a1%e6%81%af)
    - [备份项目资料](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd%e9%a1%b9%e7%9b%ae%e8%b5%84%e6%96%99)
    - [备份 MySQL 数据库](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd_mysql_%e6%95%b0%e6%8d%ae%e5%ba%93)
    - [备份软件列表](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd%e8%bd%af%e4%bb%b6%e5%88%97%e8%a1%a8)
    - [备份 dotfiles](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%a4%87%e4%bb%bd_dotfiles)
    - [其他一些没有被 iCloud 备份的文件](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%85%b6%e4%bb%96%e4%b8%80%e4%ba%9b%e6%b2%a1%e6%9c%89%e8%a2%ab_icloud_%e5%a4%87%e4%bb%bd%e7%9a%84%e6%96%87%e4%bb%b6)
    - [还有哪些值得备份的？](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e8%bf%98%e6%9c%89%e5%93%aa%e4%ba%9b%e5%80%bc%e5%be%97%e5%a4%87%e4%bb%bd%e7%9a%84%ef%bc%9f)
 * [重装系统](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e9%87%8d%e8%a3%85%e7%b3%bb%e7%bb%9f)
 * [其他](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#%e5%85%b6%e4%bb%96)
    - [Reference](https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#reference)

我隔一段时间就会重装一次系统，原因是我的系统中的环境过多，会导致系统中的 PATH 紊乱。
因此，当出现系统无法正常工作的时候，我就会考虑重装一次系统。

重装系统需要备份一些东西，做一些处理，写一篇博客记录一下，也方便我自己使用。

## 清理无用文件

### 1. 清理包管理器安装的依赖文件

我经常会使用 Python、Node.js 来写一些脚本，这些脚本会依赖 npm 生态下的 package。
这些 package 可以基于 npm 下载又或者是类似 python ，提供了 requirements 文件的项目，
可以使用命令快速恢复环境，因此，我会推荐将这些可以快速恢复的文件，直接清理掉，以
加快安装的速度。

具体包括：

 * Node.js 的 Node Modules
 * Python 的 venv
 * PHP 的 vendor

这里我会使用这样的命令来进行删除

> 下面这段代码执行时不会确认，因此，如果修改，请再三确认再执行，避免酿成大错。

    ```javascript
    find . -name "node_modules" -exec rm -rf '{}' +
    Code language: JavaScript (javascript)
    ```

具体可以参考

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

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

## 备份重要文件

### 备份 SSH 信息

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

    ```javascript
    cp -R ~/.ssh /Volumes/backup/ssh
    Code language: JavaScript (javascript)
    ```

这里的 backup 是我的单独的磁盘，用来备份资料的。

### 备份项目资料

我会把所有涉及到开发的资料都放在一个文件夹里，因此，在处理备份的时候，我只需要把
大的文件夹备份即可解决项目文件的存储问题。同时，因为不删除 .git 记录，还可以保留
数据的编辑记录。

    ```shcb-line-numbers
    tar -zcvf /Volumes/backup/project.tar.gz ~/Developer
    ```

### 备份 MySQL 数据库

我使用 homebrew 安装了 MySQL ，因此，也需要把 MySQL 数据备份出来，以免后续搭建开发
环境成本太高。执行命令，即可将所有数据库备份。

    ```shcb-line-numbers
    mysqldump -uroot -p --all-databases  --result-file=dump.sql
    ```

执行完命令，数据就会备份在当前目录下的 dump.sql 文件，接下来你只需要将其移动到你的
备份文件中。

### 备份软件列表

备份软件列表，以方便后续可以方便的进行恢复，以免遗漏。当然，你也可以选择用到什么
安装什么。但对于一些比较基础的、常用的，我还是比较喜欢重装完就安装，省的用到的时候
现场装。

软件列表需要备份的有三处：

 * /Applications
 * brew list
 * brew cask list

需要做的就是将这些信息打印出来，并导出到 txt 文件，方便后续恢复。

    ```php
    ls /Applications > applications.txt
    brew list > brew.txt
    brew list --cask > brew-cask.txt
    Code language: PHP (php)
    ```

### 备份 dotfiles

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

 一些值得备份的文件

 * `.gitignore`
 * `.zshrc`
 * `.gitconfig`

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

    ```javascript
    ls -a | grep "^\."
    Code language: JavaScript (javascript)
    ```

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

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

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

 * `～/Downloads`:如果你和我一样，比较喜欢把 downlods 作为 workspace

### 还有哪些值得备份的？

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

## 重装系统

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

## 其他

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

### Reference

 * [我在 Wiki 中记录的我使用的软件清单](https://wiki.bestony.com/#macOS%20%E5%B8%B8%E7%94%A8%E8%BD%AF%E4%BB%B6:%5B%5BmacOS%20%E5%B8%B8%E7%94%A8%E8%BD%AF%E4%BB%B6%5D%5D%20%E9%A6%96%E9%A1%B5)

## Comments

### By: 程汐

- Link: https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#comment-233
- Published: 2020-12-07T12:36:59+08:00

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

### By: 白 宦成

- Link: https://www.ixiqin.com/2020/11/01/macos-reshipment-remember/#comment-234
- Published: 2020-12-09T10:19:27+08:00

已经更新～
