Серая папка в Finder (OSX) на сетевом ресурсе SMB

Серая папка в Finder (OSX) на сетевом ресурсе SMB

Потерпите, это долго и сложно, но краткий обзор: Где OSX скрывает дополнительные атрибуты файлов (как в общих папках, так и локальных)?

У нас возникли проблемы в нашей среде Enterprise. У нас установлена ​​система Oracle ZFS, а наши машины OSX монтируют том по протоколу SMB.

Пользователь попытался переместить папку между расположениями и отменил это на полпути, в результате чего папки в обоих расположениях стали серыми. В Finder отображаются даты создания и изменения папки 06/13/1943 06:13:00. С наших рабочих станций Linux, когда мы stat файла, отображаются правильные даты создания и изменения. Затем мы касаемся файла с рабочей станции Linux или рабочей станции OSX и через терминал можем видеть папку и даже использовать команду open для папки. Но через Finder она остается серой и не может быть открыта. Это повлияло на все рабочие станции OSX, обращающиеся к этому файлу. Ни одна из них не могла его увидеть, но Windows и Linux были в порядке.

Для решения этой проблемы нам пришлось использовать устаревшие команды GetFileInfo и SetFile.

Мой вопрос к сообществу: где хранятся эти атрибуты, поскольку они не были видны в файле с помощью ls -la или stat. Но были там, когда мы смотрели на него с помощью GetFileInfo. Кто-нибудь знает, делает ли OSX какое-то странное кэширование Samba и сохраняет ли оно на сервере? или помещает это в дурацкий файл .DS_Store?

ПОМОГИТЕ!!! ПЛЗ

решение1

В OS X есть несколько способов хранения дополнительных метаданных на томах, которые изначально их не поддерживают:

  • На таких дисках, как FAT, метаданные будут храниться в виде отдельного файла с префиксом «._» в имени файла, используяAppleDoubleформат. Например, если исходный файл был «somefile.txt» и вы скопировали его на том FAT32, данные будут скопированы в «somefile.txt», а метаданные будут сохранены как «._somefile.txt».

  • На томе NTFS, смонтированном через SMB (если выполняются определенные условия, которые я не совсем понимаю), метаданные будут храниться какАльтернативные потоки данных NTFS.

Я не уверен, поддерживает ли реализация SMB вашего сервера Oracle альтернативные потоки данных, но я предполагаю, что поддерживает, и Mac использует их для хранения дополнительных метаданных (и сервер, вероятно, хранит их как расширенные атрибуты ZFS). Вы можете поискать их непосредственно на сервере, или вы также можете попробовать смонтировать том с клиента Windows и посмотреть,streams.exeможете их видеть.

решение2

Я получал 24 января 1984 г. 3:00 утра, это пасхальное яйцо (день продажи первого Mac): во время транзитной отметки времени до завершения передачи (там был какой-то сбой, из-за которого эта дата не была автоматически исправлена, когда копирование было завершено)

предположим, что выделенные серым цветом папки находятся на верхнем уровне внутри определенной папки (в противном случае добавьте «-recurse» к команде gci и удалите «-maxdepth 1» из команды find):

не ADS (на машине WinOS PowerShell):

    gci -path 'd:\specificfolder' | % {$_.fullname} | gi -stream *

не AppleDouble (подключитесь к хорошей конкретной папке, затем к плохой конкретной папке (т. е. к плохой папке будет добавлено «-1»), затем в терминале):

    rm /Volumes/specificfolder-1/._*  && rm /Volumes/specificfolder-1/.DS_Store

Windows прекрасно справляется с плохими папками (и правильно видит даты), и вы правы, что под капотом Mac Unix (или Linux) видит правильную дату с помощью команды ls -la, а все MacOS видят синдром серого цвета, так что это не относится к машине, которую вы использовали для копирования типа проблемы (и копирование файла в Windows создает серую копию, так что WinOS наверняка знает, как передать эту скрытую информацию!).

Поэтому я могу только помочь определить, в чем проблема, и согласиться с вашим решением (но учтите, что щелчок правой кнопкой мыши и получение информации или выбор и сочетание клавиш command+i никуда не делись в High Sierra, текущей ОС на момент написания этой статьи); однако, если у вас есть несколько неактивных папок: лучше автоматизировать; поэтому, чтобы что-то добавить, вы можете выполнить следующие две команды:

    find /Volumes/specificfolder/ -maxdepth 1 -type d -exec getfileinfo {} \; \
    | egrep "directory|created" | sed -e 's/directory: "\(.*\)"/\1/' \ 
    | sed -e 's/created: \(.*\)/\1/' \
    | sed -e 's#/Volumes/specificfolder#/Volumes/specificfolder-1#' > temp.txt


    while read oddline; do read evenline; setfile -d "$evenline" "$oddline"; \
    done < temp.txt

Связанный контент