Czy struktura logiczna systemu plików (w tym cele dowiązań symbolicznych) może być reprezentowana w jednym lekkim pliku (niebinarnym)?

13

Po latach gry z wieloma bazami danych SQL i NoSQL uważam, że najlepszym sposobem na zapewnienie przenośności w moich osobistych aplikacjach, które są skoncentrowane na danych, jest całkowite uniknięcie wszystkich baz danych. System plików widzę jako piękny paradygmat bazy danych, który jest przenośny, czytelny dla człowieka, a zatem ma długowieczność wystarczającą do rodzaju aplikacji osobistych, które piszę. To jest jak baza danych grafów, która wymusza strukturę drzewa (dobrą do partycjonowania), z dowiązaniami symbolicznymi reprezentującymi relacje wiele do jednego.

Czy istnieje sposób na wyeksportowanie topologii całego systemu plików jako pojedynczego pliku? Dane wyjściowe findpolecenia są obiecujące, ale nie ma znormalizowanego sposobu eksportowania danych wskazujących na to, na co wskazuje dowiązanie symboliczne. Nie chcę wymyślić własnego wyboru findformatu wyjściowego, takiego jak:

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

jeśli ktoś wcześniej wykonał pracę nad ustaleniem formatu eksportu topologii systemu plików.

Kolejnym kandydatem jest plik JSON:

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

ale znowu istnieje wiele sposobów reprezentowania typów plików i zastanawiam się, czy ktoś już wykonał pracę nad ustanowieniem standardu.

Pamiętaj, że nie chcę eksportować zawartości plików - dzięki temu eksport byłby znacznie większy niż to konieczne.

Sridhar Sarnobat
źródło

Odpowiedzi:

14

Dane wyjściowe treepolecenia wydają się wyświetlać to, czego szukasz:

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

Nowsze wersje polecenia będą nawet wyświetlać dane wyjściowe w formacie HTML, XML lub JSON.

Dane wyjściowe 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>
ciężki
źródło
2
Och, wow, właśnie tego chcę. Wiedziałem o treepoleceniu (co jest niesamowite), ale nie zdawałem sobie sprawy, że obsługuje teraz możliwe do przeanalizowania formaty.
Sridhar Sarnobat,
1
UWAGA: To treepolecenie jest wersją systemu Linux. Wersja systemu Windows nadal wyświetla tylko proste „drzewo”.
Cole Johnson