La structure logique d'un système de fichiers (y compris les cibles de liens symboliques) peut-elle être représentée dans un seul fichier léger (non binaire)?

13

Après avoir joué avec plusieurs bases de données SQL et NoSQL au fil des ans, je pense que le meilleur moyen pour moi d'assurer la portabilité de mes applications personnelles centrées sur les données est d'éviter complètement toutes les bases de données authentiques. Je vois le système de fichiers comme un magnifique paradigme de base de données portable, lisible par l'homme et donc d'une longévité suffisante pour le type d'applications personnelles que j'écris. C'est comme une base de données graphique qui applique une structure arborescente (idéale pour le partitionnement), avec des liens symboliques pour représenter les relations plusieurs-à-un.

Existe-t-il un moyen d'exporter la topologie complète du système de fichiers en un seul fichier? La sortie d'une findcommande est prometteuse, mais il n'existe aucun moyen standardisé d'exporter les données qui indiquent à quoi pointe un lien symbolique. Je ne veux pas proposer mon propre choix personnel de findformat de sortie tel que:

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

si quelqu'un a déjà effectué le travail d'établissement d'un format d'exportation de topologie de système de fichiers.

Un autre candidat est un fichier JSON:

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

mais encore une fois, il existe plusieurs façons de représenter les types de fichiers et je me demande si quelqu'un a déjà fait le travail d'établissement d'une norme.

Notez que je ne souhaite pas exporter le contenu des fichiers - cela rendrait l'exportation beaucoup plus importante que nécessaire.

Sridhar Sarnobat
la source

Réponses:

14

La sortie de la treecommande semble afficher ce que vous recherchez:

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

Les versions plus récentes de la commande seront même sorties en HTML, XML ou JSON.

Sortie 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>
lourd
la source
2
Oh wow, c'est exactement ce que je veux. J'étais au courant de la treecommande (ce qui est génial) mais je ne savais pas qu'elle prend désormais en charge les formats analysables.
Sridhar Sarnobat
1
REMARQUE: cette treecommande est la version Linux. La version Windows ne sort toujours que le simple "arbre".
Cole Johnson