O que é a pasta __MACOSX?

152

O que são essas pastas __MACOSX que continuo vendo em arquivos zip criados por pessoas no OSX? Alguns ocupam até 30% do arquivo.

Qual programa está produzindo essa pasta __MACOSX e como os usuários de mac podem evitar esse erro?

Yada
fonte
8
Eles são super-irritantes, sim, e geralmente inúteis, pois os garfos de recursos costumam estar vazios. Mas pelo menos eles são inofensivos, ao contrário da abordagem não-padrão que a Apple adotou para tamanhos de arquivo> 4 GB com o material OS X embutido, que confundirá qualquer outra ferramenta e quebrará novamente para arquivos suficientemente grandes. E ei, poderia ser pior, poderia estar armazenando duas cópias de cada arquivo com o mesmo nome, uma para os dados e outra para a bifurcação de recursos, muitas vezes impossibilitando o acesso, como costumava ser o Mac pré-OSX. Oh Apple, por que você odeia formatos de arquivo padrão?
quer
3
@ Bobince: na verdade, garfos de recursos eram uma idéia muito boa ... na época. Atualmente, o mesmo efeito é alcançado ao armazenar recursos como arquivos individuais, a maioria dos quais se parece com formatos de arquivo padrão.
16
Não há nada de errado com os metadados, pois a Apple tem o talento de criar seus próprios formatos e bagunçar os formatos existentes com extensões incompatíveis gratuitamente! Ter os dados do tipo de conteúdo como metadados é uma grande coisa e me entristece que o OS X esteja se movendo em direção ao hack do Windows de extensões de arquivo como alternativa. Embora isso não seja tão ruim quanto no Linux, onde o sistema de arquivos suporta o armazenamento de metadados do Tipo de Conteúdo, mas não os desktops os utilizam, preferindo uma mistura completamente quebrada de extensão de arquivo / padrões de nome e detecção de conteúdo (urgh!). Suspiro, sistemas operacionais eh?
quer
@bince: Mas sim, pelo menos o formato que eles criaram para isso não causa nenhum dano real, além de listagens de diretório um pouco bagunçadas e desperdiçar essencialmente 1 inode e 1 bloco por extração vazia de fork extraída, a menos que você use algo como NTFS (que armazenará o conteúdo do arquivo na MFT para esses arquivos pequenos); nesse caso, apenas desperdiçará o "inode" (entrada da MFT).
SamB 15/02
9
Pode ser corrigido após o fato porzip -d filename.zip __MACOSX/\*
Chris Johnson

Respostas:

52

http://www.realsoftware.com/listarchives/gettingstarted/2005-09/msg00328.html

A Apple fornece recursos internos para arquivos ZIP no OS X 10.3 e superior, e esses arquivos são o resultado do armazenamento seguro da Resource Forks pela Apple. Você nunca verá esses arquivos executando o OS X 10.3 ou superior, mas como o Windows e outros sistemas operacionais não entendem essa forma especial de Resource Forks, eles aparecerão como você os vê.

nickf
fonte
4
Não se trata apenas de bifurcações de recursos, qualquer coisa além do conteúdo básico do arquivo é inserida no arquivo AppleDouble. A Apple está se afastando dos garfos de recursos, mas em direção a coisas como atributos estendidos que também serão armazenados no contêiner AppleDouble.
Gordon Davisson
14
Você faz parecer um recurso. Os arquivos .zip estão intencionalmente ausentes no departamento de metadados. Se você deseja metadados, use um formato diferente, não um Mac. Exemplo de implementação correta de zip + metadados: .jar
Zenexer 22/08/13
16
link morto, corrija.
Lucas - Better Coding Academy
71
"desde que o Windows e outros sistemas operacionais não entendem" - Ugh. Eu odeio esse tipo de terminologia
Joe Plante
5
Acabei de descobrir: se você estiver em um Mac, usando a linha de comando, unzip filename.zipdescompactará o diretório __MACOSX /, que você não deseja, mas open filename.zipfará a coisa certa.
Edward Falk
107

Aqui está um link que explica muito bem. Suponho que seja um pouco tarde para ajudar Yada, mas para a posteridade.

Explicação da bifurcação de recursos na Wikipedia

O resto é minha opinião:

@ Nickf: nunca ver esses arquivos não é uma característica dessas versões do OS X, é uma falha. As pessoas produzem dados, agrupam, armazenam em diferentes mídias e assim por diante. Eles precisam saber o que é necessário ou o que não é necessário. Escondê-los os mantém no escuro.

A velha idéia ruim de esconder coisas dos usuários: um programador, preocupado com a conveniência de realizar seu próprio trabalho, abusa de algo no domínio do usuário final, para facilitar as coisas para si mesmo.

Nesse caso, ele armazenou metadados no espaço de dados do usuário e depois os ocultou. Ele perdeu o quadro geral: o usuário não perceberá os detalhes ocultos. Quando ele empacota seus dados e os envia para algum lugar imprevisto pelo programador, as peças ausentes não serão enviadas ou as peças desconhecidas chegarão, que nem o usuário nem o destinatário podem explicar.

Esconder coisas do usuário é ruim. Ele assume que o usuário é estúpido, quando, com mais precisão, o programador é estúpido ou preguiçoso.

Para deixar claro, esse mau hábito não se limita ao MAC. Está em todo lugar. É uma conseqüência dos programadores que se apaixonam por seus próprios esquemas e fornecedores priorizando seus próprios objetivos antes das necessidades do usuário final.

Em resumo.

__MACOSX:
excrementos de programadores com cheiro estranho emergindo de debaixo do tapete onde foram varridos.

Programadores e fornecedores: mantenha as coisas em aberto. Quando você os esconde, você se torna estúpido e o usuário desinformado.

pbernatchez
fonte
12
Essa resposta seria melhor se fosse apenas uma resposta. O discurso prolongado sobre programadores estúpidos e usuários preguiçosos diminui isso.
precisa
11
@pbernatchez Na verdade, se você parasse para aprender como eram as coisas e como elas evoluíram, provavelmente você não deixaria aqui a sua própria garantia, arrogantes "excrementos". Os garfos de recursos eram um detalhe de implementação (muito bom!) Pré-Mac OS X e os usuários só os encontravam ao fazer interface com outros sistemas; desde os anos 90, a Apple mudou-se cada vez mais para um mundo sem garfos de recursos, mas ainda se dobrando para manter a compatibilidade. "Armazenar metadados no espaço de dados do usuário"? WTF? Com que distorção você precisa definir "metadados" e "espaço de dados do usuário" para dizer isso? Você deve odiar sistemas de arquivos!
hmijail
3
"Ocultar coisas do usuário é ruim". Cara, você também deve odiar todos os tipos de interfaces de usuário, bibliotecas e abstrações, e ... bem, qualquer tipo de programação e computadores mais avançados que um ábaco.
precisa saber é o seguinte
4
Isso não responde à pergunta. Depois de ler esta resposta, ainda não tenho idéia de quais metadados estão contidos na pasta _MACOSX ou de quais são os garfos de recursos. Eu acho que as pessoas estão votando nisso apenas porque concordam com o discurso retórico?
Atte Juvonen
11
Embora eu concorde que o tom carregado de emoção não seja útil, também concordo absolutamente que criar coisas ocultas que são ocasionalmente necessárias é uma péssima idéia, exatamente como indicado nesta resposta: os usuários (a) não (a) enviam arquivos ocultos que são ou (b) enviar arquivos ocultos que o destinatário possa ver e nem entender. Esses arquivos devem estar visíveis ou os dados devem ser incorporados nos arquivos de alguma maneira sinalizada como "ignorável" por outros sistemas operacionais. Arquivos e diretórios ocultos devem ser usados ​​principalmente para proteger os usuários, não para mantê-los no escuro.
Mike Williamson
16

Para responder sua pergunta final:

como os usuários de mac podem evitar esse erro?

Os usuários do Mac OS X podem instalar um utilitário de arquivamento de terceiros como o Keka , pedir para não usar o Resource Forks e configurá-lo como o compressor padrão.


Como fazer isso com Keka

Diga ao Keka para não usar Forks de Recursos

  1. Abra o Keka sem um arquivo (no Launchpad, Spotlight, etc.)
  2. Pressione ⌘ Cmd+ ,para abrir Preferências
  3. Selecione a guia Compactação
    Keka "Compactação" guia, selecionada
  4. Marque "Excluir garfos de recursos do Mac (por exemplo: .DS_Store)"
    Uma caixa de seleção com a mensagem "Excluir garfos de recursos do Mac (ex: .DS_Store)"

Faça do Keka o compressor padrão

  1. Na mesma janela do Keka Preferences
  2. Selecione a guia Geral
    Guia "Geral" do Keka, selecionado
  3. Clique em "Definir Keka como compressor / descompressor padrão" [sic]
    insira a descrição da imagem aqui
Ben Leggiero
fonte
11
Isso poderia ser melhorado se eu adicionasse algumas informações nas duas últimas etapas, "diga para não usar o Resource Forks, depois configure-o como o compressor padrão".
Steven C. Howell
@ stvn66 Feito! Apenas para sua informação, no entanto, isso geralmente está fora do escopo dessas perguntas, e é por isso que não o fiz inicialmente.
Ben Leggiero
2
Voto negativo, desculpe. Não sou fã de instalar software de terceiros para corrigir um problema que pode ser corrigido com o software padrão. Como Chris Johnson apontou acima, zip -dremoverá os garfos de recursos de um arquivo zip. De fato, acho que se você usar o zip em primeiro lugar, os garfos de recursos não serão adicionados em primeiro lugar.
Edward Falk
11
@EdwardFalk Isso é justo! Esta resposta foi criada para resolver o "Como faço para que ele sempre se comporte dessa maneira?" problema, não o "Como faço para que ele se comporte dessa maneira uma vez?" 1.
precisa saber é o seguinte