Я разбирался с базой данных Yojimbo, и в процессе обнаружил, что в бекап Time Machine помещаются не все файлы. Такая мистика мне не по нраву – если что-то в системе происходит, то это должно иметь какие-то явные и объяснимые причины.
Вот содержимое каталога Yojimbo (при запущенной программе, о чём говорят lock-файлы):
$ cd "Library/Application Support/Yojimbo" $ ls -al -rw-------@ 1 ctrld staff 759 Mar 13 16:33 .ContentIndex.lock -rw-r--r--@ 1 ctrld staff 369 Mar 13 15:38 .ContentIndex.version -rw-------@ 1 ctrld staff 759 Mar 13 16:33 .Yojimbo.lock -rw-r--r--@ 1 ctrld staff 532480 Mar 13 15:38 ContentIndex.skindex -rw-r--r--@ 1 ctrld staff 28815360 Mar 13 16:33 Database.sqlite -rw-r--r-- 1 ctrld staff 2731 Mar 13 15:38 State.plist
Но в Time Machine помещены лишь эти файлы:
$ hdiutil mount /Volumes/Meow/ole-mac.sparsebundle $ ls -al "/Volumes/Time Machine Backups/Backups.backupdb/ole-mac/Latest/Macintosh HD/Users/ctrld/Library/Application Support/Yojimbo/" -rw-r--r--@ 1 ctrld staff 28815360 Mar 13 15:42 Database.sqlite -rw-r--r--@ 1 ctrld staff 2731 Mar 13 15:38 State.plist $ hdiutil eject /Volumes/Time\ Machine\ Backups/
Вы обратили на знак “@” после прав доступа? Он обозначает, что файлу или каталогу назначены “расширенные аттрибуты”. Просмотреть их можно командой “xattr -l filename”. Пройдёмся по файлам:
$ xattr -l .ContentIndex.lock com.apple.metadata:com_apple_backup_excludeItem: 00000000 62 70 6C 69 73 74 30 30 5F 10 11 63 6F 6D 2E 61 |bplist00_..com.a| 00000010 70 70 6C 65 2E 62 61 63 6B 75 70 64 08 00 00 00 |pple.backupd....| 00000020 00 00 00 01 01 00 00 00 00 00 00 00 01 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 1C |.............| 0000003d
Тот же самый аттрибут com_apple_backup_excludeItem = ‘com.apple.backupd’ выставлен для .ContentIndex.version, .Yojimbo.lock и ContentIndex.skindex.
Теперь понятно, почему файлы исключены из бекапа Time Machine.
Работа с хранилищем метаданных
Метаданные из файлов сервисом mds (Metadata Server) переносятся в центральное хранилище. На
$ sudo mdfind "com_apple_backup_excludeItem == 'com.apple.backupd'" /Users/ctrld/Library/Application Support/Yojimbo/.ContentIndex.version /Users/ctrld/Library/Application Support/Yojimbo/ContentIndex.skindex /Users/ctrld/Library/Application Support/Yojimbo/.ContentIndex.lock /Users/ctrld/Library/Application Support/Yojimbo/.Yojimbo.lock ...
К данным также можно обратиться командой mdls:
$ mdls "/Users/ctrld/Library/Application Support/Yojimbo/.ContentIndex.version" com_apple_backup_excludeItem = "com.apple.backupd" kMDItemContentType = "" kMDItemFSContentChangeDate = 2010-03-13 18:34:34 +0200 kMDItemFSCreationDate = 2010-03-13 18:34:34 +0200 kMDItemFSCreatorCode = "" kMDItemFSFinderFlags = 0 kMDItemFSHasCustomIcon = 0 kMDItemFSInvisible = 1 kMDItemFSIsExtensionHidden = 0 kMDItemFSIsStationery = 0 kMDItemFSLabel = 0 kMDItemFSName = ".ContentIndex.version" kMDItemFSNodeCount = 0 kMDItemFSOwnerGroupID = 20 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 369 kMDItemFSTypeCode = ""
В случае необходимости можно удалить все данные из центрального хранилища, и оно будет автоматически перестроено (этот процесс длительный):
$ sudo mdutil -E /
Учтите также, что после удаления базы Time Machine будет делать полный бекап всей системы.