[Mac] 解決 Time Machine 一直停在 Preparing Backup 無法備份的問題

[Mac] 解決 Time Machine 一直停在 Preparing Backup 無法備份的問題

之前會不定期用 Time Machine 來幫 Mac 作備份,

不過從幾個月前開始,就遇到了奇怪的問題…

 

一開始是 Time Machine 一直卡在 Preparing Backup 步驟,

擺了幾個小時都毫無進度,但有時候又恢復正常。

最近則是完全不行,卡在 Preparing Backup 之後,就再也出不來了,

不管等多久、取消重新開始、重開機等等都沒有效果…

 

後來照著 Fix Time Machine When Stuck on “Preparing Backup” in Mac OS X

這篇的做法,試著砍掉 inProgress 檔案,

在硬碟連接狀態下重新開機、等待 Spotlight 重新索引,

但是問題依舊…

 

後來看到 Mac 有內建 tmutil 這個 Time Machine 對應的命令列工具,

想說乾脆就來把舊的備份全部清掉看看~

 

先看看目前的備份…

但因為權限問題,無法執行:

testuser@my-mac ~ $ sudo tmutil listbackups

The operation could not be completed because tmutil could not access
private application data on the backup disk. Use the Privacy tab
in the Security and Privacy preference pane to add Terminal to the
list of applications which can access Application Data.

 

需要到 System Preferences > Security & Privacy > Privacy > Full Disk Access,

把你的 Terminal 軟體加到允許清單之中,

像我平常是用 iTerm,就把 iTerm.app 加進允許清單中:

 

加好之後,再執行 tmutil 的指令,就不會出現錯誤了。

像下面是列出我目前的備份目錄:

testuser@my-mac ~ $ sudo tmutil machinedirectory

/Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac

 

想要將全部備份都刪除的話,

就用 tmutil delete <最上層的備份目錄>~

這裡的「最上層的備份目錄」,指的就是 tmutil machinedirectory 傳回的結果。

執行之後,它就會將下面每一個備份的目錄都刪除掉:

testuser@my-mac ~ $ sudo tmutil delete "/Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/"

Deleting: /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2017-10-05-145444
Deleted (48.7G): /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2017-10-05-145444
Deleting: /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2017-10-26-152549
Deleted (81.7G): /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2017-10-26-152549
......

 

這個刪除的過程相當漫長,像上面一個備份就佔了幾十 GB,

刪除掉一個可能就要十幾到數十分鐘不等…

 

指令結束之後,記得用 ll (或 ls -l) 看一下備份的目錄,

是不是全部都清乾淨了~

以我的例子來說,殘留了 2018-08-13 的備份,

以及 2018-11-06 進行中的備份 (應該是因為不正常關機) 未能刪除成功:

testuser@my-mac ~ $ ll "/Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac"

drwxr-xr-x@ 3 root  staff  102 Nov  6 15:48 2018-08-13-135211/
drwxr-xr-x@ 6 root  staff  204 Nov  6 11:31 2018-11-06-113147.inProgress/
lrwxr-xr-x  1 root  staff   17 Aug 13 13:52 Latest@ -> 2018-08-13-135211

 

用 tmutil delete <備份目錄>,可以將這些殘餘的目錄刪除:

testuser@my-mac ~ $ sudo tmutil delete "/Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-08-13-135211/"

Deleting: /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-08-13-135211
Deleted (20.3G): /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-08-13-135211
Total deleted: 20.3G

 

inProgress 進行中的備份也能刪除:

testuser@my-mac ~ $ sudo tmutil delete "/Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-11-06-113147.inProgress/"

Deleting: /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-11-06-113147.inProgress
Deleted (0B): /Volumes/Seagate Backup Plus Drive/Backups.backupdb/my-mac/2018-11-06-113147.inProgress
Total deleted: 0B

 

最後目錄裡只剩下一個 Latest 的符號連結 (symbolic link),

這個檔案似乎是刪不掉的…

這時再重新開始新的 Time Machine 備份,

等待一陣子之後,備份終於開始,並且跨越 Preparing Backup 步驟啦:

 

最後備份也順利完成~

如果你也遇到 Time Machine 卡在 Preparing Backup 步驟的話,

可以先試著照上面連結的方法排除,

還是不行的話,就試試將全部備份移掉,應該就可以恢復正常囉~

 

附註:有時候不知道 Time Machine 到底在做什麼,好像沒有反應,

執行下面指令,可以看到它正在處理哪些檔案,

通常 Time Machine 是有在處理東西的喔~

sudo fs_usage backupd

 

如果正好看到它在處理一下你覺得不需要備份的檔案,

你就可以將這些目錄加進 Time Machine 的排除列表中囉~

 

參考資料:

How can I manually delete old backups to free space for Time Machine?

(本頁面已被瀏覽過 12 次)

發表迴響

你的電子郵件位址並不會被公開。

This site uses Akismet to reduce spam. Learn how your comment data is processed.