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

13

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 confiáveis. Eu vejo o sistema de arquivos como um belo paradigma de banco de dados que é portátil, legível por humanos e, portanto, tem longevidade suficiente para o tipo de aplicativos pessoais que estou escrevendo. É como um banco de dados gráfico que aplica uma estrutura em árvore (boa para particionar), 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 findcomando é promissora, mas não há uma maneira padronizada de exportar os dados que indicam o que um link simbólico aponta. Não quero criar minha própria escolha pessoal de findformato de saída, como:

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

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

Outro candidato é um arquivo JSON:

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

mas, novamente, existem várias maneiras de representar tipos de arquivo e me pergunto se alguém já fez o trabalho de estabelecer um padrão.

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

Sridhar Sarnobat
fonte

Respostas:

14

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

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

As versões mais recentes do comando serão exibidas como 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>
pesado
fonte
2
Oh uau, é exatamente isso que eu quero. Eu estava ciente do treecomando (o que é incrível), mas não sabia que agora ele suporta formatos analisáveis.
Sridhar Sarnobat
1
NOTA: Este treecomando é a versão do Linux. A versão do Windows ainda gera apenas a "árvore" simples.
Cole Johnson