La struttura logica di un file system (inclusi target simbolici) può essere rappresentata in un singolo file leggero (non binario)?


13

Dopo aver giocato con più database SQL e NoSQL nel corso degli anni, ritengo che il modo migliore per me di garantire la portabilità nelle mie app personali incentrate sui dati sia di evitare del tutto tutti i database in buona fede. Vedo il file system come un bellissimo paradigma di database che è portatile, leggibile dall'uomo e quindi ha una longevità sufficiente per il tipo di applicazioni personali che sto scrivendo. È come un database grafico che impone una struttura ad albero (buona per il partizionamento), con collegamenti simbolici per rappresentare relazioni molti-a-uno.

C'è un modo per esportare l'intera topologia del file system come un singolo file? L'output di un findcomando è promettente, ma non esiste un modo standardizzato per esportare i dati che indicano a cosa punta un collegamento simbolico. Non voglio venire con la mia scelta personale del findformato di output come:

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

se qualcuno ha precedentemente svolto il lavoro di definizione di un formato di esportazione della topologia del file system.

Un altro candidato è un file JSON:

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

ma ancora una volta ci sono molti modi per rappresentare i tipi di file e mi chiedo se qualcuno abbia già fatto il lavoro di stabilire uno standard.

Nota che non desidero esportare il contenuto dei file, ciò renderebbe l'esportazione molto più grande del necessario.

Risposte:


14

L'output del treecomando sembra mostrare ciò che stai cercando:

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

Le versioni più recenti del comando verranno persino stampate in HTML, XML o JSON.

Output 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>

2
Oh wow, è esattamente quello che voglio. Ero a conoscenza del treecomando (che è fantastico) ma non mi rendevo conto che ora supporta formati analizzabili.
Sridhar Sarnobat,

1
NOTA: questo treecomando è la versione Linux. La versione per Windows genera ancora solo il semplice "albero".
Cole Johnson,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.