APFS是蘋果新出品的文件系統,擁有很多新特性,比如拷貝文件時是淺拷貝(也就是說復拷貝一個10GB的文件,磁碟佔用量並不會增加10GB,而是幾乎沒有增加),在真正修改時也只保存修改的部分。還有其他更多的新特性,這裡不再贅述了,因為這不是本文的重點。

本文的重點在於,有些新特性可能導致很多在「系統信息」層面的可用空間,在實際上並不一定完全可用。為什麼呢?

原來APFS有一些新特性會隱藏的佔用很多磁碟空間,在採用完全兼容APFS的系統調用時,如果系統空間不足,這部分佔用空間將會自動釋放。比如「iCloud雲盤」就會在系統空間不足時,自動釋放掉緩存在本地的內容,從而給系統釋放回空間。再比如,在Finder中通過Command+I查看磁碟的信息,就會看到有「可清除」空間的提示:

但是很多應用並不能完全兼容APFS的系統調用,所以往往無法兼容到這一特性,獲取並使用到這部分磁碟。比如最簡單的,直接在終端中執行df命令,返回的可用空間就不會包括這類「可自動釋放」的空間。

這部分空間裏,有個大頭,就是被稱作TimeMachine本地快照的東東。TimeMachine大家都知道,是在外置磁碟或者時間膠囊裏,用於保存當前系統過去一段時間的磁碟快照的一種服務。這服務只會佔用外置磁碟或者時間膠囊的磁碟空間。

然而,在APFS文件系統裏,系統在磁碟本地(而非外置的TimeMachine磁碟)也會保存本地級別的快照。默認情況下,即便是沒有設置和掛載外置TimeMachine磁碟,也能打開TimeMachine時光機,回溯文件的歷史快照。這部分快照的保存頻率、數量取決於當前磁碟的大小和剩餘空間。

雖然這是蘋果從用戶體驗上去做的「優化」。但是頂不住我們有時候真的需要這些「可釋放空間」真正釋放出來。比如使用iTunes為iOS設備備份的時候,就必須要「真實可用的剩餘空間」,而非「名義上的剩餘空間」。這個時候應該怎麼操作呢?這就要祭出我們的大殺器——tmutil工具了。

首先,列出所有的本地快照

sudo tmutil listlocalsnapshots /

該操作回返回類似下面結果。

com.apple.TimeMachine.2017-12-07-205337

com.apple.TimeMachine.2017-12-07-230541

每一行對應一個快照。快照名格式是com.apple.TimeMachine.的前綴加上一個快照編號。要刪除對應的快照,只需要執行:

sudo tmutil deletelocalsnapshots 快照編號

例如:

sudo tmutil deletelocalsnapshots 2017-12-07-205337

推薦閱讀:

相關文章