В прошлой статье я рассказал об аттрибуте, который говорит Time Machine не делать резервную копию файла. Сегодня продемонстрирую, как его можно использовать.

Берём два файла. Для первого (bigfile1.bin) выставим аттрибут com.apple.metadata:com_apple_backup_excludeItem='com.apple.backupd', для другого (bigfile2.bin) - нет:

$ touch bigfile1.bin
$ touch bigfile2.bin
$ xattr -w com.apple.metadata:com_apple_backup_excludeItem \
   com.apple.backupd bigfile1.bin
$ xattr -l bigfile1.bin
com.apple.metadata:com_apple_backup_excludeItem: com.apple.backupd
$ xattr -l bigfile2.bin
$

Также сделаем два каталога, в которые поместим несколько файлов без расширенных атрибутов, и на первый выставим исключение. Тест покажет, поместит ли Time Machine файлы из запрещённого каталога в архив или нет.

$ mkdir bigdir1
$ touch bigdir1/bigfile3.bin
$ touch bigdir1/bigfile4.bin
$ xattr -w com.apple.metadata:com_apple_backup_excludeItem com.apple.backupd bigdir1
$ xattr -l bigdir1
com.apple.metadata:com_apple_backup_excludeItem: com.apple.backupd
$ xattr -l bigdir1/bigfile4.bin
$
$ mkdir bigdir2
$ touch bigdir2/bigfile5.bin
$ touch bigdir2/bigfile6.bin
$ xattr -l bigdir2
$

Запускаем Time Machine, проводим бекап. Смотрим результат.

Монтируем образ Time Machine с сетевой Time Capsule:

$ hdiutil mount /Volumes/Meow/ole-mac.sparsebundle

Ищем, какие файлы занесены в архив Time Machine:

$ mdfind \
    -onlyin '/Volumes/Time Machine Backups/Backups.backupdb/ole-mac' \
    '_kTimeMachineOldestSnapshot >  $time.now(-7200)' | grep -e bigfile -e bigdir
/Volumes/Time Machine Backups/Backups.backupdb/ole-mac/2010-03-13-191711/Macintosh HD/Users/ctrld/bigdir2
/Volumes/Time Machine Backups/Backups.backupdb/ole-mac/2010-03-13-191711/Macintosh HD/Users/ctrld/bigdir2/bigfile5.bin
/Volumes/Time Machine Backups/Backups.backupdb/ole-mac/2010-03-13-191711/Macintosh HD/Users/ctrld/bigdir2/bigfile6.bin
/Volumes/Time Machine Backups/Backups.backupdb/ole-mac/2010-03-13-191711/Macintosh HD/Users/ctrld/bigfile2.bin

Освобождаем образ Time Machine

$ hdiutil eject /Volumes/Time\ Machine\ Backups/

Из полученных результатов видно, что при установке атрибута com_apple_backup_excludeItem данные действительно не помещаются в архив Time Machine. Если атрибут выставлен для каталога, то не помещается ни сам каталог, ни его содержимое.

Само собой исключение каталогов в опциях Time Machine никто не отменяет, но бывают ситуации, когда проще сделать исключение каталогов через командную строку. И опять-таки - знание никогда не будет лишним.