整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ
macOS 時光機備份超久?教你一招加速!

前言
macOS 的時光機(Time Machine)是一個非常方便的備份工具,但有時候備份過程可能會變得非常緩慢,尤其是你過一段時間之後才進行時光機備份會更明顯,所以這一篇就來記錄一下該如何以最快的方式來進行時光機備份,讓你不再為了備份而苦惱!
事發原因
早期我電腦剛到手的時候,基本上我每週都會跑一次時光機備份,確保避免資料遺失的風險,但後來因為工作忙碌,導致我有一段時間沒有進行時光機備份,當我再次啟動時光機備份時,發現備份過程非常緩慢,甚至有時候會卡在某個階段不動,這讓我非常困擾。

上面的圖你可以看到時光機正在找尋有變動的檔案。
對於一名開發者來講,其實電腦的變動頻率非常的高,尤其是當你在開發過程中會不斷地修改、編譯、測試程式碼,這些動作都會產生大量的檔案變動,導致時光機在備份時需要花費更多的時間來找尋這些變動的檔案。
解決方法
解決方式非常簡單,但是要先做一些事情,首先我是使用 iTerm 操作我的電腦,所以必須要先到設定 -> 隱私權與安全性 -> 完全取用硬碟

接著找到 iTerm 將它啟用

當然這邊一樣會跳出要求你輸入密碼的視窗,輸入你的密碼後就完成了。

然後由於我的開發專案大多都是再 /Users/rayxu/GitHub 這個路徑底下,所以我就直接在 iTerm 輸入以下指令:
1 | |

輸入完畢後,你也可以在時光機的偏好設定裡面看到剛剛加入的排除清單了。

這邊也解釋拆解一下指令:
find ~/GitHub:使用find搜尋工具,並指定從「使用者主目錄下的 GitHub 資料夾」開始搜尋。-name "node_modules":尋找名稱完全符合"node_modules"的目標。-type d:限定找到的目標必須是「資料夾 (directory)」,排除掉剛好同名的單一檔案。-prune:這是一個效能關鍵字!它的意思是「一旦找到符合的資料夾,就不要再鑽進去搜尋了」。這能避免 find 浪費時間去掃描node_modules底下那幾萬個小檔案,大幅提升執行速度。-exec ... {} +:把前面找到的所有結果,交給後面的指令去執行。{}代表找到的資料夾路徑,+表示把所有路徑打包起來「一次性」餵給後面的指令,效率比找到一個就執行一次高很多。tmutil addexclusion -p:這是 macOS 專屬的 Time Machine 管理指令。addexclusion代表加入排除名單。加入-p參數非常重要,它代表「認路徑不認檔案」,這樣一來,即使你未來把某個專案的node_modules刪掉又重新安裝,這個排除規則依然會持續生效。
執行完這個指令後,Time Machine 就會自動把 node_modules 這個資料夾加入到備份的排除清單中,這樣一來,當你下次進行 Time Machine 備份時,就不會再花時間去掃描 node_modules 裡面那些大量的小檔案了,備份速度自然就會大幅提升!
那為什麼我要特別忽略 node_modules 呢?因為在前端開發中,node_modules 資料夾通常會包含成千上萬個小檔案,這些檔案的變動頻率非常高,而且它們通常都是由 package.json 和 package-lock.json 這兩個檔案所管理的依賴關係所產生的,所以只要備份這兩個檔案就足夠了,沒必要把整個 node_modules 都備份起來。
當然,如果你有其他類似的資料夾也不需要備份的話,也可以使用同樣的方法把它們加入到 Time Machine 的排除清單中,這樣就能讓你的備份過程更加順暢了哩~
參考文獻
整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ