博客 / 詳情

返回

我是如何使用 Mackup 優雅的備份和恢復電腦開發環境

利用 Homebrew 和 Mackup 優雅的備份和恢復電腦開發環境

遇到的問題

  1. 每次更換電腦都要重新安裝開發環境和初始化各類常用軟件的配置
  2. 最頭疼的是常用軟件的插件及個性化配置的遷移

如下流程我三年經歷了六次😣😣😣:

  • 安裝 Homebrew
  • 再用 Homebrew 安裝常用軟件:vscode,iTerm,nvm,Chrome……
  • 增加配置文件,配置環境變量,如 nvm
  • 安裝 vscode 的常用插件
  • 配置插件
  • 安裝 iTerm 插件
  • 配置插件
  • ......

整個過程繁瑣且耗時,怎麼解?

解法

解決軟件安裝效率問題

如果你已經使用 Homebrew 管理常用軟件,那一定要使用 Homebrew Bundle 優雅的備份和恢復軟件列表

批量備份 homebrew 軟件

# 執行brew bundle dump備份命令
brew bundle dump --describe --force --file="/your/path/to/Brewfile"

# 參數説明
--describe:為列表中的命令行工具加上説明性文字。
--force:直接覆蓋之前生成的 Brewfile 文件。如果沒有該參數,則詢問你是否覆蓋。
--file:在指定位置生成文件。如果沒有該參數,則在當前目錄生成 Brewfile 文件。

批量安裝 homebrew 軟件

brew bundle --file="/your/path/to/Brewfile"

批量安裝 vscode 插件

# vscode 安裝成功後,利用 vscode 提供的 code 命令批量安裝插件
code --install-extension dbaeumer.vscode-eslint

解決配置遷移問題

一切配置皆文件,所以只要解決文件同步該問題迎刃而解,這裏可以使用 git 或雲同步工具。
這裏還有一個小問題就是,從 git 同步下來配置文件如何生效?
不同軟件的配置文件放在固定目錄,一定是分散在文件系統的各個角落,而我們 git 同步下來的文件是按照我們自己定義的結構保存的,這裏就需要處理一下,讓我們的拉下來的配置文件生效。

解法就是使用「軟連接」

ln 命令是 linux 下一個十分重要也有用的命令,它可以為一個文件在另外一個地方建立一個同步的鏈接,類似於快捷鍵。
ln [參數] [源文件或目錄] [目標文件或目錄]
ln -s 創建軟鏈接命令,s 是代號 symbolic 的意思,所謂軟鏈接,它只會在你選定的位置上生成一個鏡像,而不會佔用磁盤空間,而如果使用 ln 不帶參數的話,則就是硬鏈接,會在選定的位置上生成一個和源文件大小相同的文件,佔用磁盤空間。

備份過程

將默認的配置文件全部移動到備份目錄,然後通過軟連接重定位配置文件的位置:

cp ~/.zshrc ~/dotfiles/.zshrc
rm ~/.zshrc
ln -s ~/dotfiles/.zshrc ~/.zshrc

還原過程

將 dotfiles 裏的備份配置軟鏈到實際位置:

ln -s ~/dotfiles/.zshrc ~/.zshrc

上述過程可以手寫腳本也可以使用 Mackup 這個工具完成

如何使用

備份配置

  1. 初始化目錄
# 找一個你喜歡的地方放置 dotfiles 文件夾,例如你的用户根目錄
cd ~

# 你可以 clone 我的這個模板
git clone https://github.com/lorcannn/dotfiles.git

# 或者你也可以自己控制目錄結構
mkdir dotfiles
...
  1. 備份 Homebrew 軟件
# 執行brew bundle dump備份命令
brew bundle dump --describe --force --file="~/dotfiles/homebrew/Brewfile"
  1. 手動備份 vscode 插件

# 手動複製插件 ID 後在 /vscode/setup.sh 中添加執行命令,如下面的命令將安裝 eslint 插件
code --install-extension dbaeumer.vscode-eslint
  1. 備份其他配置文件
# 通過 Homebrew (http://brew.sh/) 安裝

brew install mackup

# 創建 Mackup 的配置文件 參考: https://github.com/lra/mackup/blob/master/doc/README.md

touch ~/.mackup.cfg

# 備份

mackup backup
  1. 上傳代碼到你的倉庫

初始化新設備

請確保電腦上安裝瞭如下軟件:

  • Git
  • Homebrew
  • Mackup
git -v

brew -v

mackup --version
  1. 拉取你的 dotfiles 倉庫
git clone https://github.com/{yourname}/dotfiles.git

# 若 .sh 文件執行無權限則需要增加權限
chmod u+x ~/dotfiles/**/*.sh
  1. 使用 Homebrew 安裝軟件
/dotfiles/homebrew/setup.sh
  1. 安裝 vscode 插件
/dotfiles/vscode/setup.sh
  1. 恢復其他配置文件
# 生成 mackup 配置文件
~/dotfiles/bootstrap.sh

# 另外還需修改 .mackup.cfg 中 `path = /Users/{yourname}/dotfiles` 的 `{yourname}` 替換為你的用户名,以保證路徑正確

# 最後還原備份的文件
mackup restore

圖解:
圖解我的 dotfiles 架構

我的配置模板

https://github.com/lorcannn/d...

參考資料:

  • https://github.com/cpojer/dot...
  • https://dotfiles.github.io/
  • https://github.com/lra/mackup
  • https://github.com/Homebrew/h...
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.