¿Se puede representar la estructura lógica de un sistema de archivos (incluidos los objetivos de enlace simbólico) en un único archivo liviano (no binario)?

13

Después de jugar con múltiples bases de datos SQL y NoSQL a lo largo de los años, creo que la mejor manera de garantizar la portabilidad en mis aplicaciones personales centradas en datos es evitar por completo todas las bases de datos genuinas. Veo el sistema de archivos como un hermoso paradigma de base de datos que es portátil, legible por humanos y, por lo tanto, tiene una longevidad suficiente para el tipo de aplicaciones personales que estoy escribiendo. Es como una base de datos gráfica que impone una estructura de árbol (buena para particionar), con enlaces simbólicos para representar relaciones de muchos a uno.

¿Hay alguna manera de exportar toda la topología del sistema de archivos como un solo archivo? El resultado de un findcomando es prometedor, pero no hay una forma estandarizada de exportar los datos que indiquen a qué apunta un enlace simbólico. No quiero crear mi propia elección personal de findformato de salida, como:

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

si alguien ha realizado previamente el trabajo de establecer un formato de exportación de topología del sistema de archivos.

Otro candidato es un archivo JSON:

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

Pero, de nuevo, hay varias formas de representar los tipos de archivos y me pregunto si alguien ya ha hecho el trabajo de establecer un estándar.

Tenga en cuenta que no deseo exportar el contenido de los archivos, ya que la exportación sería mucho mayor de lo necesario.

Sridhar Sarnobat
fuente

Respuestas:

14

La salida del treecomando parece mostrar lo que estás buscando:

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

Las versiones más nuevas del comando incluso se enviarán a HTML, XML o JSON.

Salida 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
fuente
2
Oh wow, eso es exactamente lo que quiero. Conocía el treecomando (que es increíble), pero no me di cuenta de que ahora es compatible con formatos analizables.
Sridhar Sarnobat
1
NOTA: Este treecomando es la versión de Linux. La versión de Windows todavía solo muestra el "árbol" simple.
Cole Johnson