Kann die logische Struktur eines Dateisystems (einschließlich der Symlink-Ziele) in einer einzelnen Lightweight-Datei (nicht binär) dargestellt werden?

13

Nachdem ich im Laufe der Jahre mit mehreren SQL- und NoSQL-Datenbanken gespielt habe, ist es für mich die beste Möglichkeit, die Portabilität meiner datenzentrierten persönlichen Apps sicherzustellen, alle bonafide-Datenbanken vollständig zu vermeiden. Ich sehe das Dateisystem als ein schönes Datenbankparadigma, das portabel und für den Menschen lesbar ist und daher eine Langlebigkeit aufweist, die für die Art der persönlichen Anwendungen, die ich schreibe, ausreicht. Es ist wie eine Diagrammdatenbank, die eine Baumstruktur erzwingt (gut für die Partitionierung), mit Symlinks, um viele-zu-eins-Beziehungen darzustellen.

Gibt es eine Möglichkeit, die gesamte Dateisystemtopologie als einzelne Datei zu exportieren? Die Ausgabe eines findBefehls ist vielversprechend, aber es gibt keine standardisierte Möglichkeit, die Daten zu exportieren, die angeben, auf was ein Symlink verweist. Ich möchte nicht meine persönliche Wahl des findAusgabeformats treffen, wie zum Beispiel:

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

wenn jemand zuvor die Arbeit zum Einrichten eines Exportformats für die Dateisystemtopologie ausgeführt hat.

Ein weiterer Kandidat ist eine JSON-Datei:

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

Aber es gibt auch hier mehrere Möglichkeiten, Dateitypen darzustellen, und ich frage mich, ob jemand die Arbeit zur Festlegung eines Standards bereits erledigt hat.

Beachten Sie, dass ich den Inhalt von Dateien nicht exportieren möchte - dies würde den Export viel größer als nötig machen.

Sridhar Sarnobat
quelle

Antworten:

14

Die Ausgabe des treeBefehls scheint anzuzeigen, wonach Sie suchen:

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

Neuere Versionen des Befehls werden sogar in HTML, XML oder JSON ausgegeben.

XML-Ausgabe:

<?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>
heavyyd
quelle
2
Oh wow, genau das will ich. Ich wusste, dass der treeBefehl (der großartig ist), aber ich wusste nicht, dass er jetzt syntaktisch analysierbare Formate unterstützt.
Sridhar Sarnobat
1
HINWEIS: Dieser treeBefehl ist die Linux-Version. Die Windows-Version gibt nur noch den einfachen "Baum" aus.
Cole Johnson