A estrutura lógica de um sistema de arquivos (incluindo alvos de links simbólicos) pode ser representada em um único arquivo leve (não-binário)?

12

Depois de jogar com vários bancos de dados SQL e NoSQL ao longo dos anos, sinto que a melhor maneira de garantir a portabilidade em meus aplicativos pessoais centrados em dados é evitar todos os bancos de dados genuínos. Eu vejo o sistema de arquivos como um paradigma de banco de dados bonito que é portátil, legível e, portanto, tem longevidade que é suficiente para o tipo de aplicativos pessoais que estou escrevendo. É como um banco de dados gráfico que impõe uma estrutura em árvore (boa para particionamento), com links simbólicos para representar relacionamentos muitos-para-um.

Existe uma maneira de exportar toda a topologia do sistema de arquivos como um único arquivo? A saída de um comando find é promissora, mas não há uma maneira padronizada de exportar os dados que indicam para o que um link simbólico aponta. Eu não quero chegar a minha própria escolha pessoal de find formato de saída, como:

/home/me/photos/beach/me_and_my_dog.jpg -> /home/me/photos/beach/1.jpg

se alguém já tiver feito o trabalho de estabelecer um formato de exportação de topologia do sistema de arquivos.

Outro candidato é um arquivo JSON:

home : [{
    me : [{
        photos : [{
            beach : [{
                1.jpg,
                { me_and_my_dog.jpg : ./1.jpg }
            }]
        }]
    }
}]

mas, novamente, há várias maneiras de representar os tipos de arquivo e gostaria de saber se alguém já fez o trabalho de estabelecer um padrão.

Note que não desejo exportar o conteúdo dos arquivos, o que tornaria a exportação muito maior do que o necessário.

    
por Sridhar-Sarnobat 19.12.2014 / 22:37

2 respostas

14

A saída do comando tree parece exibir o que você está procurando:

.
└── photos
    └── beach
        ├── 1.jpg -> me_and_dog.jpg
        └── me_and_dog.jpg

Versões mais recentes do comando serão enviadas para HTML, XML ou JSON.

Saída XML:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
  <directory name=".">
    <directory name="photos">
      <directory name="beach">
        <link name="1.jpg" target="me_and_dog.jpg"></link>
        <file name="me_and_dog.jpg"></file>
      </directory>
    </directory>
  </directory>
  <report>
    <directories>2</directories>
    <files>2</files>
  </report>
</tree>
    
por 19.12.2014 / 23:18
2

Você pode usar mtree para isso. Veja www.freebsd.org/cgi/man.cgi ? query = mtree & sektion = 8 & manpath = FreeBSD + 6.3-RELEASE e code.google.com/p / mtree-port

mtree -c

É muito versátil.

    
por 26.12.2014 / 04:08