我有一個 6T 的陣列用來備份 TimeMachine 和自己平時拍的照片,這兩天導照片的時候,發現陣列滿了。用 DaisyDisk 一看,TimeMachine 大概佔了 700G 的隱藏空間。
爲了保證能順利導入照片,我決定冒險先將 TimeMachine 關閉,等今後硬盤擴容後再考慮開啓備份。
其實,我的大部分重要文件都保存在陣列上,所以即便系統崩潰,問題也不是特別嚴重。
關於時間機器(TimeMachine),德哥曾經寫過一篇文章《和時間機器的鬥爭,找回被封存的空間》,本文在原有基礎上進行了精簡和拓展。
關閉自動備份
如果你要停掉 TimeMachine 或刪除某個快照,則可以將自動備份先關閉。
命令行模式
關閉自動備份
tmutil disable
停止當前備份進程
<pre spellcheck="false" class="" lang="sh" cid="n9" mdtype="fences" style="margin: 0px 0.15em; padding: 0.5em; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important; overflow: visible; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em; break-inside: avoid; text-align: left; white-space: normal; background-color: rgb(249, 249, 249); width: inherit; border-radius: 3px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204); color: rgb(119, 119, 119);">tmutil stopbackup</pre>
平時還是建議開啓自動備份。
tmutil enable
圖形化模式
打開時間機器的偏好設置,將自動備份取消。效果同命令行。
刪除指定快照
命令行形式
macOS 也可以通過命令行刪除指定的 TimeMachine 快照。
我們先找到快照備份地址,命令如下:
顯示最近的快照
tmutil latestbackup
顯示所有已完成的快照
tmutil listbackups
檢查是否存在任何第三方快照
tmutil listlocalsnapshots /
顯示示例如下:
<pre style="margin: 0.6em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background-color: rgb(255, 255, 255); font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em;">
Snapshot dates for all disks:2019-10-13-1711202019-10-13-2143242019-10-13-225244……
</pre>
輸入刪除命令,就可以刪除指定的快照而不影響其他快照:
tmutil deletelocalsnapshots 2019-10-13-171120
圖形化模式
打開 Finder,進入到你的備份目錄,點擊頂部菜單右上角的 TimeMachine 圖標,選擇進入時間機器
,或者打開應用程序中的「時間機器」,就可以進入時間機器模式。
選擇右側邊欄的備份時間,找到備份目錄,找到需要刪除的備份快照,點擊操作
,執行刪除所有備份
。
手動批量刪除 TimeMachine 備份
當我們已關閉了自動備份,想刪除所有備份騰出空間時,我們可以採用手動批量方式進行強制刪除。
顯示當前系統的備份目錄
tmutil machinedirectory
刪除 Backups.backupdb 目錄下所有備份
➜ sudo tmutil delete /Volumes/LaCie/Backups.backupdb
上述命令執行後提示如下:
……
Deleting: /Volumes/LaCie/Backups.backupdb/AdeMini/2019-10-12-233916
Deleted (1.0G): /Volumes/LaCie/Backups.backupdb/AdeMini/2019-10-12-233916
Total deleted: 1.3G
暴力刪除 Backups.backupdb 備份
對於一些用tmutil deletelocalsnapshots
和tmutil delete
刪除失敗的快照或備份文件,你也可以用如下命令進行暴力刪除。在用rm
進行暴力刪除時,可能存在命令執行成功,空間卻未釋放的 bug。
<pre style="margin: 0.6em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background-color: rgb(255, 255, 255); font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em;">
sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass rm -rfv Backups.backupdb
</pre>
找回頑固的隱藏空間
您在執行刪除命令時發生斷電,或備份/刪除 APFS 磁盤上的文件發生異常,可能存在數據塊遺失、空間未正常釋放等情況。
當你的系統存在大量的隱藏磁盤空間,你卻通過du
等命令無法找到時,很有可能就表示你的文件系統存在錯誤。
您可能需要使用較低級別的 fsck_apfs
命令來驗證和修復卷。
命令行模式
先找到備份盤的文件系統名稱:
df -h
再執行修復:
fsck_hfs -fy -x /dev/rdisk0s2
圖形化模式
你也可以通過磁盤工具
來進行修復,效果和命令行等同。
會提示如下信息,當顯示操作成功時,即表示完成修復:
正在“LaCie”(disk0s2)上運行“急救”
正在修復文件系統。
宗卷已卸載。
正在執行 fsck_hfs -fy -x /dev/rdisk0s2
……
已成功修復宗卷“LaCie”。
文件系統檢查退出代碼爲 0。
正在恢復發現爲已卸載的原始狀態。操作成功。
終於,700G 的空間重新回來了。
另附:其他常用 tmutil 命令
打開/關閉本地快照
tmutil enablelocaltmutil disablelocal
分析快照目錄
sudo tmutil calculatedrift /Volumes/LaCie/Backups.backupdb/AdeMini
顯示/指定/刪除備份目標
tmutil destinationinfo [-X]sudo tmutil setdestination /Volumes/LaCie/Backups.backupdb/AdeMinisudo tmutil removedestination destination_id
簡單顯示用法
tmutil help