Pasta acinzentada no Finder (OSX) no compartilhamento de rede SMB

Pasta acinzentada no Finder (OSX) no compartilhamento de rede SMB

Tenha paciência comigo, isso é longo e complicado, mas TL; DR Onde o OSX esconde atributos extras em arquivos (em compartilhamentos ou locais)?

Estamos tendo problemas em nosso ambiente empresarial. Temos uma configuração Oracle ZFS e nossas máquinas OSX são SMB montando o volume.

Um usuário tentou mover uma pasta entre locais e cancelou isso no meio, o que resultou na pasta em ambos os locais ficando esmaecida. No Finder mostra uma data de criação e modificação na pasta 13/06/1943 06:13:00 Em nossas estações de trabalho Linux, quando declaramos o arquivo, ele mostra a criação correta e as datas de modificação. Em seguida, tocamos no arquivo da estação de trabalho Linux ou de uma estação de trabalho OSX e através do terminal podemos ver a pasta e até usar o comando abrir na pasta. Mas através do Finder ele permanece esmaecido e não pode ser aberto. Isso afetou todas as estações de trabalho OSX que acessam este arquivo. Nenhum deles conseguiu ver, mas o Windows e o Linux estavam bem.

Acabamos usando os comandos obsoletos GetFileInfo e SetFile para resolver isso.

Minha pergunta para a comunidade é: onde esses atributos estão sendo armazenados, pois eles não eram visíveis no arquivo usando ls -la ou stat. Mas estávamos lá quando analisamos isso com GetFileInfo. Alguém sabe se o OSX faz algum cache estranho do Samba e o armazena no servidor? ou coloca isso em um arquivo .DS_Store estúpido?

AJUDA!!! por favor

Responder1

O OS X tem algumas maneiras de armazenar seus metadados extras em volumes que não os suportam nativamente:

  • Em coisas como volumes FAT, ele armazenará os metadados como um arquivo separado com um prefixo "._" no nome do arquivo, usandoAppleDuploformatar. Por exemplo, se o arquivo original fosse "somefile.txt" e você o copiasse para um volume FAT32, os dados seriam copiados para "somefile.txt" e os metadados seriam salvos como "._somefile.txt".

  • Em um volume NTFS montado sobre SMB (se certas condições que eu não entendo totalmente se aplicarem), ele armazenará os metadados comoFluxos de dados alternativos NTFS.

Não tenho certeza se a implementação SMB do seu servidor Oracle suporta fluxos de dados alternativos, mas acho que sim, e o Mac os está usando para armazenar metadados extras (e o servidor provavelmente os está armazenando como atributos estendidos do ZFS). Você pode procurá-los diretamente no servidor ou também tentar montar o volume a partir de um cliente Windows e ver sestreams.exeposso vê-los.

Responder2

Eu estava recebendo 24 de janeiro de 1984, 3h00, esse é o ovo de páscoa (o dia em que o primeiro Mac foi vendido): carimbo de data / hora durante o trânsito até que a transferência seja concluída (onde houve alguma falha que não corrigiu automaticamente aquela data quando a cópia acabou)

assumindo que as pastas acinzentadas são de nível superior dentro de uma pasta específica (caso contrário, adicione "-recurse" ao comando gci e remova "-maxprofundidade 1" do comando find):

não ADS (em um PowerShell de máquina WinOS):

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

não AppleDouble (conecte-se à pasta específica boa e, em seguida, à pasta específica ruim (ou seja, a pasta ruim terá "-1" anexado) e depois no terminal):

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

O Windows está bem com as pastas ruins (e vê as datas corretamente), e você está certo sobre o unix (ou linux) subjacente do Mac vendo a data correta com o ls -lacomando, e todos os MacOS veem a síndrome acinzentada, então não é específico para a máquina que você usou para copiar o tipo de problema (e copiar o arquivo no Windows produzindo uma cópia acinzentada, então o WinOS certamente sabe como transferir essas informações ocultas!).

Portanto, só posso ajudar a identificar onde está o problema e concordar com sua solução (mas observe que clique com o botão direito e obtenha informações ou selecione e comando + i não desapareceu no High Sierra, sistema operacional atual no momento em que este livro foi escrito); no entanto, se você tiver várias pastas esmaecidas: é melhor automatizar; então, para adicionar algo, você pode executar os dois comandos a seguir:

    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

informação relacionada