Вопрос или проблема
Я пытался решить проблему в этом посте, и кажется, что xattr -cr .
на самом деле не удаляет атрибут com.apple.FinderInfo, как и xattr -c <filename>
или xattr -d com.apple.FinderInfo <filename>
.
Вот что я пробовал и как оболочка ответила:
- вывел список всех файлов с расширенными атрибутами, показал 15 файлов
FlackBook-Pro:BasicEQ julianflack$ xattr -lr .
./Source/PluginProcessor.h: com.apple.lastuseddate#PS: +N?g
./Source/PluginProcessor.h: com.apple.metadata:kMDLabel_mgte763loh3jfiptugpk6t3rl4: ????? ?Sv?pӰ=y??X?1
?7d?LHNd;?Ӊ?????<?-) LR?B?_?1ּy|??Q&??0_ ??©?)?J?
./Source/PluginProcessor.cpp: com.apple.lastuseddate#PS: ?L?g
./Source/PluginProcessor.cpp: com.apple.metadata:kMDLabel_mgte763loh3jfiptugpk6t3rl4: ?2?}?F????x???z9y??G??%?L?H7?L?
и так далее……..
- запустил
xattr -cr .
, подтвердил код выхода 0, снова запустилxattr -lr .
- 3 файла остаются с атрибутом
com.apple.FinderInfo:
FlackBook-Pro:BasicEQ julianflack$ xattr -cr .
FlackBook-Pro:BasicEQ julianflack$ echo "$?"
0
FlackBook-Pro:BasicEQ julianflack$ xattr -lr .
./Builds/MacOSX/BasicEQ.xcodeproj: com.apple.FinderInfo:
./Builds/MacOSX/build/Debug/BasicEQ.vst3: com.apple.FinderInfo:
./Builds/MacOSX/build/Debug/BasicEQ.component: com.apple.FinderInfo:
- запустил
xattr -c <filename>
, подтвердил код выхода 0, запустилxattr -lr .
- указанный файл все еще был там с тем же атрибутом
FlackBook-Pro:BasicEQ julianflack$ xattr -c ./Builds/MacOSX/BasicEQ.xcodeproj
FlackBook-Pro:BasicEQ julianflack$ echo "$?"
0
FlackBook-Pro:BasicEQ julianflack$ xattr -lr .
- запустил
xattr -d com.apple.FinderInfo <filename>
, подтвердил код выхода 0, запустилxattr -lr .
- та же проблема
FlackBook-Pro:BasicEQ julianflack$ xattr -d com.apple.FinderInfo ./Builds/MacOSX/BasicEQ.xcodeproj
FlackBook-Pro:BasicEQ julianflack$ echo "$?"
0
FlackBook-Pro:BasicEQ julianflack$ xattr -lr .
Другие вещи, которые я пробовал:
- подтвердил, что я использую bash, а не zsh
type xattr
возвращаетxattr is hashed (/usr/bin/xattr)
Я немного теряюсь здесь, я разместил тот же вопрос в Stack Overflow и, после обсуждений с некоторыми отвечающими в комментариях, они закрыли мой вопрос по какой-то причине. Я подумал, что могу попробовать здесь также, есть какие-нибудь идеи?
Я боролся с этой проблемой и только что нашел решение.
Проблема в том, что у меня эти папки находились внутри iCloud, поэтому они синхронизировались. Когда я отключил резервное копирование/синхронизацию iCloud (как бы это ни называлось – я не специалист по Mac), это “исправило” проблему. Мне также пришлось заново загрузить свой репозиторий в ту структуру, которая должна была быть там, так как, когда вы отключаете iCloud, это переименовывает папки и помещает их в некий “iCloud Backup”. Я удалил эту папку и просто воссоздал структуру (с отключенным iCloud), и больше у меня не было такой проблемы.
Не уверен, касается ли это и вашего случая, но, возможно, это (может быть?) даст вам какое-то представление о том, что происходит.
Ответ или решение
Чтобы решить проблему с атрибутом com.apple.FinderInfo, который не удаляется с помощью команды xattr -c
, важно понять, что происходит под капотом файловой системы macOS и как она взаимодействует с iCloud. Приведенная вами ситуация явно связана с особенностями работы системы синхронизации iCloud и управления атрибутами в macOS.
Теория
macOS использует расширенные атрибуты (xattr) для хранения дополнительной информации о файлах, такой как метаданные Finder или параметры безопасности. Атрибут com.apple.FinderInfo
обычно используется для хранения специфических для Finder метаданных, таких как тип значков и настройки окна. Команда xattr
предназначена для управления этими атрибутами, а флаг -c
должен очистить все расширенные атрибуты, если она завершится успешно.
Часто причиной, по которой расширенные атрибуты не удаляются, может быть режим доступа или блокировка файла из внешних систем хранения, таких как iCloud. iCloud активно синхронизирует содержимое ваших файлов и папок, и иногда это может вмешиваться в операции системы, особенно если файл или папка в активном состоянии синхронизации.
Пример
Судя по описанному в вопросе, проблема могла возникнуть из-за того, что файлы находятся под управлением iCloud. Когда состояния или метаданные файлов синхронизируются с iCloud, некоторые изменения на локальном уровне могут быть временно заблокированы или переопределены самим iCloud, основываясь на своих внутренних политиках синхронизации.
Другие пользователи тоже сталкивались с похожими проблемами: когда изменения атрибутов не отражались немедленно или когда файлы не удалялись. Также можно упомянуть проблему, описанную в вашем же вопросе о том, как отключение iCloud привело к исчезновению проблемы с атрибутами. В вашем примере, после отключения iCloud и перестройки файловой структуры, проблема была решена.
Применение
Для решения вашей проблемы вы можете предпринять следующие шаги:
-
Отключение iCloud для целевой папки. Перейдите в Системные настройки > Apple ID > iCloud и временно отключите синхронизацию для папки, которая вызывает проблемы. Это обеспечит полную свободу действий над файлами на локальном уровне без вмешательства iCloud.
-
Пересоздание структуры папок. Будет полезно удалить текущую папку из системы хранения iCloud и создать копию локально. Это позволит избежать потенциальных конфликтов в данных и изменить атрибуты без внешнего влияния.
-
Очистка кэша и повторная синхронизация. После того как все изменения были внесены, стоит снова включить iCloud, чтобы убедиться, что обновленная структура корректно синхронизируется со всеми вашими устройствами.
-
Разрешения и владение файлами. Если проблема продолжает существовать, проверьте разрешения на файлы и убедитесь, что у вашей учетной записи достаточно прав для изменения атрибутов. Используйте
chmod
иchown
, если это необходимо. -
Использование терминала для углубленного анализа. Используйте команды
ls -l@
иxattr -p
для детального изучения текущих атрибутов и выявления возможных причин их присутствия. -
Логирование системы. Если метод проб и ошибок не приводит к успеху, создайте журнал системных команд, связанных с xattr, и проанализируйте его на наличие предупреждений или ошибок.
-
Обновление системы. Убедитесь, что ваша версия macOS и все его компоненты обновлены, так как обновления часто содержат исправления для подобных багов.
Таким образом, проблема с удалением com.apple.FinderInfo
в большей степени связана не с самой командой xattr
, а с внешними условиями, влияющими на ее выполнение, такими как iCloud и возможность устройства вносить изменения в файлы. Подход, описанный выше, поможет вам диагностировать и эффективно устранять такие проблемы.