問題描述
我平時使用的電腦是 MacBook Pro M1 版,硬盤存儲空間只有 256G,有次系統提示我存儲空間告急,在整理文件的過程中,我發現微信在電腦文件中的占比位居榜首,達到 40G 至 50G,那么,如何將微信備份文件遷移到外接硬盤呢?
接下來,我就和大家分享下我將微信聊天記錄自動備份到外接硬盤的全過程。

清理后的微信文件依然很大
解決方案
如何將微信聊天記錄「自動備份至外接硬盤」?其實這里要用到的就是「軟鏈接」。
「軟鏈接」以路徑形式存在,也叫符號鏈接(Symbolic link),類似于 Windows 系統中的「快捷方式」,最早在 Linux 和 Unix 系統中用于創建文件或目錄的一種形式。在 macOS 系統里叫做「替身」,鏈接不同文件系統的文件。
操作步驟
所以解決問題的最佳方案,就是把微信備份文件通過軟連接放到外接硬盤,這樣在 Mac 端微信執行「備份聊天記錄至電腦」操作時,通過創建「軟鏈接」的方式,可以將聊天記錄直接備份到外接硬盤;需要還原備份時,直接插上硬盤即可顯示并恢復相關聊天記錄。達到節省 Mac 本地磁盤存儲空間的目的。
找到微信聊天記錄備份文件默認路徑
/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/2.0b4.0.9
在 Mac 電腦系統內,微信的備份文件會存放在 2.0b4.0.9的Backup文件夾內,并且備份目錄的路徑不會改變。每一個微信賬號的聊天記錄備份對應此目錄下的一個文件夾,名稱通常為一長串字母和數字的組合。

微信備份文件默認路徑
如果你的 Mac 版微信沒有執行過備份操作,很可能沒有Backup這個文件夾,或者Backup下面沒有子文件夾,為了保證文件權限一致,需要先執行一次備份,生成文件夾目錄(無需全部備份,只備份一個人的聊天記錄即可),我挑了一個文件最小的聊天記錄進行了備份。
需要注意的是,備份操作實際上是將手機微信里的聊天記錄備份到電腦里,所以需要將手機和電腦連接至同一網絡后,在手機端選擇需要備份的聊天記錄。在穩定的網絡下進行備份,并且過程中不能黑屏,否則會導致備份中斷。

復制 Backup 文件夾至移動硬盤
備份完成之后,將 Backup 文件夾復制到移動硬盤中的某個位置,例如:/Volumes/硬盤名/backup/wechat(注意此處路徑中不要有中文,否則微信可能無法讀?。?/p>
復制完成后,就可以把微信默認備份路徑下的Backup文件夾刪除,如果不放心,可以刪除前備份一下。

復制 Backup 文件夾到硬盤
創建軟連接
打開終端,執行如下命令:
ln -s /Volumes/硬盤名/backup/wechat/Backup`/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/2.0b4.0.9/Backup
此處我有三點要和大家分享:
需要將命令中的「硬盤名」改成你自己的外接硬盤的盤符名稱。
如果硬盤的名稱中有空格,寫法為反斜杠+空格,例如:/Volumes/Extreme Pro/backup/
經過我的實測,我發現只能使用移動硬盤創建軟連接,無法用 NAS 做為外部存儲。原因是 NAS 為網絡掛載,以協議方式傳輸數據,而非通過 USB 連接外部硬盤。軟鏈接創建后,微信目錄下的Backup就會指向移動硬盤下的Backup文件夾。

創建軟連接(圖標左下角帶有箭頭)
重簽名操作
在第一步的時候,我們已經通過一個聊天記錄,進行了一次備份操作,在微信「管理備份文件」中,會顯示備份文件的名稱、時間等信息,但創建軟連接后,之前的備份文件卻不見了。
原因是 Mac 下的應用是以沙盒模式運行,無法直接讀取不在該應用程序以外的文件夾,雖然通過創建軟連接的方式將備份文件指向外接硬盤,但實際還是無法讀取。解決此問題的方法是將微信重簽名,具體操作步驟:退出微信,復制下方代碼到終端,回車后盲輸密碼,再次回車(也可直接輸入前段命令后,直接拖動程序到終端)。
sudo codesign --sign - --force --deep /Applications/WeChat.app

微信重簽名
重新簽名后,當點擊微信左下角的設置按鈕后,會有「是否允許訪問外接硬盤」的彈窗提示,此時需要點擊「好」,讓微信獲得訪問權限。
至此,微信便可逃逸沙盒,正常識別到備份文件。再次打開微信,進入到「管理備份文件」界面,我們可以看到之前的備份文件信息。

備份信息
寫在最后
以上就是我將 Mac 版微信聊天記錄備份到外接硬盤的全過程,以后當我需要備份或恢復聊天記錄時,接上硬盤便可。如果你也有類似的需求,不妨試試。