和時間機器的再次鬥爭(釋放 TimeMachine 佔用的空間)

我有一個 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 deletelocalsnapshotstmutil 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章