Existe um sistema de arquivos semelhante ao git?

27

O Git armazena conteúdo exclusivamente em seu repositório, com base no hash calculado de qualquer arquivo. Se meu diretório tiver duas cópias do mesmo arquivo em algum lugar dentro dele, o git só o armazenará uma vez.

Gostaria de saber se esse mesmo conceito foi implementado no nível do sistema operacional como algum tipo de sistema de arquivos?

Se um sistema de arquivos agisse dessa maneira por padrão, ajudaria muito com problemas de dll hell . Essencialmente, ele faria o link simbólico automaticamente em seu nome. Qualquer aplicativo pode ser empacotado (como um jar) em um diretório com todas as suas dependências e sem custo extra de armazenamento.

Os entusiastas de Ruby compartilham bibliotecas publicando-as como rubygems. Ainda assim, esse esforço para compartilhar gemas resultou em pesadelos de implantação que levaram ao conceito Vendor Everything de copiar todas as dependências em pastas locais para evitar esses pesadelos.

Mario
fonte
2
Não sou especialista, mas confira o ZFS .
ForeverWintr

Respostas:

21

O que você está procurando é chamado "desduplicação". Embora geralmente seja implementado por fornecedores de produtos de armazenamento especializados, o sistema de arquivos ZFS também o implementa. A maioria dos sistemas operacionais derivados do Unix pode usar o ZFS e, portanto, eu o recomendo como o primeiro local a procurar.

Aaron Miller
fonte
1
Vejo que a "desduplicação" pode ser implementada no nível do arquivo, com o que me preocupei em particular.
Mario
3

A Network Appliance, Inc. possui capacidade de armazenamento como essa há muitos anos; na verdade, eles tiveram queixas apresentadas à Sun Microsystems por seu sistema de arquivos ZFS e faz o que Aaron Miller está mencionando em sua resposta aceita. Pelo que vale, as reclamações foram resolvidas com a Oracle após cerca de 3 anos.

Eu tenho usado isso como uma solução corporativa desde 2000 e funciona bem. O custo do armazenamento após a primeira 'cópia' ocorre quando há uma alteração no arquivo. Caso contrário, com muitas 'cópias' ocorre apenas um pequeno aumento no espaço para nome.

Eu não acho que isso responda à pergunta sobre "nível de sistema operacional", mas sim em "nível de sistema de arquivos".

vgoff
fonte
0

O novo Apple File System (APFS, assim chamado porque já havia um AFS que era outra coisa) faz essa mágica de "ligação automática automática" / "desduplicação". O macOS 10.13 oferece suporte nativo (na maioria dos Macs), assim como o iOS 11.

Dito isto, não acho que isso seja suficiente para torná-lo "git like", pois se fosse "git like", também haveria uma soma de verificação criptográfica do estado da estrutura do meu diretório em determinados momentos no tempo, para que Eu podia ter certeza de que ninguém havia invadido meu computador ou modificado os diretórios do sistema. Na verdade, eu uso o git repos para rastrear certos diretórios críticos do sistema nos meus Macs, como arquivos de configuração do Apache, LaunchDaemons, LaunchAgents e alguns outros - assim, quando instalo o software ou executo o servidor por algum tempo, para ver se há alguma coisa. foi ferrado.

O APFS também possui um suporte bacana para descarregar coisas do sistema de arquivos para a nuvem quando elas não são usadas há algum tempo, mas ainda parecem estar lá, e serão preenchidas novamente a partir da nuvem sob demanda.

Você sempre pode construir um Hackintosh e brincar com ele. BSD é divertido.

CommaToast
fonte