Criando camada no sistema de arquivos do Linux para adicionar funcionalidades extras ao sistema de arquivo

image_pdfimage_print

A vantagem de criar camada no sistema de arquivos do Linux é poder adicionar funcionalidades extras e transparentes ao efetuar operações no sistema de arquivos, diferentes das funcionalidades padrão do sistema.

Bind mount fornece uma visão de uma árvore de diretórios em um local diferente. Ele expõe os mesmos arquivos, possivelmente com diferentes opções de montagem e (com bindfs) diferente propriedade e permissões, por exemplo.

Sistemas de arquivos que apresentam uma visão alterada de uma árvore de diretórios são chamados de sistemas de arquivos de sobreposição(overlay filesystems) ou sistemas de arquivos empilháveis(stackable filesystems).

Há muitos outros sistemas de arquivos de sobreposição que executam transformações mais avançadas. Abaixo está uma lista de alguns dos mais comuns. Se o seu caso de uso desejado não é coberto aqui, verifique o repositório de sistemas de arquivos FUSE na internet para ver se já não existe pronto e disponibilizado por alguém.

Log

  • loggedfs — Efetua o log de todos os acessos ao sistema de arquivo para propósito de monitoramento, debug, etc

Filtrar arquivos visíveis

  • clamfs — executa o anti-virus em arquivos ao serem lidos em disco
  • filterfs — oculta partes do sistema de arquivo
  • rofs — visão somente leitura (read-only view). Similar ao bindfs -r, apenas com uma implementação pouco mais leve.
  • Union mounts — apresenta múltiplos sistemas de arquivos (chamados branches) em um simples diretório: Se arvore_diretorio_1 contém foo and arvore_diretorio_2 contém bar, então a união na visualização do conteúdo conterá ambos, foo e bar. Novos arquivos são salvos num branch específico, de acordo com regras configuradas. Há diversas implementações deste conceito, como abaixo citamos algumas:
    • aufs — Implementação Linux kernel
    • funionfs — Implementação FUSE
    • mhddfs — FUSE, gerencia múltiplos pontos de montagem escrevendo arquivos em discos baseado em espaço disponível livre
    • overlay — Implementação Linux kernel
    • unionfs-fuse — FUSE, com funcionalidades de cache

Modicar nomes e metadados de arquivos

  • ciopfs — sistema de arquivos case-insensitive (pode ser útil ao montar conjuntamente com sistemas de arquivo Windows)
  • convmvfs — converte os nomes de arquivos entre diferentes charsets de acordo com a configuração (exemplos)
  • posixovl — armazena nomes de arquivos Unix e outros metadados (permissão, propriedade, etc) em sistemas de arquivos mais restritos como VFAT

Altera visualização de conteúdo de arquivos

  • avfs — é um sistema que permita a todos os programas olhar arquivos arquivados ou comprimido, ou arquivos de acesso remoto sem recompilar os programas ou alterar o kernel.
  • fuseflt — executa arquivos através de pipeline quando lido. Exemplo de uso: recodificar arquivo de texto ou arquivos de mídia
  • lzopfs — descompressão transparente de arquivos compactados
  • mp3fs — transcode arquivos FLAC para MP3 quando sendo em modo leitura
  • scriptfs — executa scripts para servir um conteúdo (como se fosse um local CGI)

Modifica o modo como o conteúdo é armazenado

  • chironfs — replica arquivos entre múltiplos sistemas de armazenamento (RAID-1 em nível de árvore de diretório)
  • copyfs — mantém uma cópia de todas as versões de todos os arquivos
  • encfs — criptografa os arquivos
  • pcachefs — camada de cache em disco para sistema de arquivos remoto lento
  • simplecowfs — salva as mudanças em memória, deixando o arquivo original em disco intacto até ser ‘fechado’, quando seria as alterações salvas (se o sistema de arquivo permitir)
  • wayback — mantém cópias de todas as versões dos arquivos
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!