2017-09-04 102 views
1

我想遞歸地使用tmutil列出當前從Time Machine備份中排除的所有文件。我知道我可以確定這與單個文件以遞歸方式運行tmutil'

tmutil isexcluded /path/to/file 

但我似乎無法得到此遞歸運行。我試圖排除排除的文件並輸出到這樣的文件:

tmutil isexcluded * | grep -i excluded >> ~/Desktop/TM-excluded.txt 

但這隻輸出當前目錄的頂級數據。我是否可以使用find或類似的命令將本機上的每個文件/目錄提供給tmutil isexcluded並提取排除的文件列表?什麼是構建命令的最佳方式?

我知道,大多數排除在

/System/Library/CoreServices/backupd.bundle/Contents/Resources/StdExclusions.plist

發現,一些特定的應用程序,通過排除

sudo mdfind "com_apple_backup_excludeItem = 'com.apple.backupd'" 

是可搜索的,但我在尋找一種方式將文件上的實際標誌與這些列表進行比較。

回答

3

這應做到:

find /starting/place -exec tmutil isexcluded {} + | grep -F "[Excluded]" | sed -E 's/^\[Excluded\][[:space:]]*//' 

這需要的事實,tmutil允許您通過多個文件名的優勢,所以我在find的末尾使用+代替;然後我不您不得不爲您的機器上的每個文件執行一個新的進程 - 這可能會很慢。 grep尋找固定(F)字符串[Excluded]sed刪除[Excluded]和4個空格。

2

你可以在/path/to/master/dir任何子目錄下的所有文件與

find /path/to/master/dir -type f 

現在你不能管道輸出到tmutil,所以你可以做的是

find /path/to/master/dir -type f -exec tmutil isexcluded {} \; 

這樣做是:

  • 我們知道find /path/to/master/dir -type f做什麼。
  • -exec將在其後執行任何操作。
  • {}將使用find的每個文件與tmutil isexcluded分別輸出。
  • \結束了-exec,因此-exec知道應該執行什麼命令(如果您想在其後執行其他操作)。