Чи може логічна структура файлової системи (включаючи цілі символьних посилань) представлена ​​в одному легкому файлі (не бінарному)?


13

Граючи з декількома базами даних SQL і NoSQL протягом багатьох років, я вважаю, що найкращий спосіб забезпечити переносимість моїх особистих програм, орієнтованих на дані, - це уникати всіх банальних баз даних повністю. Я розглядаю файлову систему як прекрасну парадигму бази даних, яка є портативною, читаною людиною і, таким чином, має довговічність, достатню для типу особистих додатків, про які я пишу. Це як база даних графіків, яка застосовує структуру дерева (добре для розділення) із символьними посиланнями для відображення відносин багато в один.

Чи можна експортувати всю топологію файлової системи як єдиний файл? Вихід findкоманди є багатообіцяючим, але не існує стандартизованого способу експорту даних, який вказує на що вказує символьне посилання. Я не хочу придумувати свій особистий вибір findформату виводу, наприклад:

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

якщо хтось раніше робив роботу зі створення формату експорту топології файлової системи.

Інший кандидат - файл JSON:

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

але знову ж є кілька способів представлення типів файлів, і мені цікаво, чи хтось уже виконав роботу зі створення стандарту.

Зауважте, що я не хочу експортувати вміст файлів - це зробить експорт набагато більшим, ніж потрібно.

Відповіді:


14

Результат treeкоманди, здається, відображає те, що ви шукаєте:

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

Новіші версії команди навіть виводять у HTML, XML або JSON.

Вихід 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
Ох вау, саме цього я хочу. Мені було відомо про treeкоманду (що дивовижно), але я не розумів, що зараз вона підтримує розбірливі формати.
Шрідхар Сарнобат

1
ПРИМІТКА. Ця treeкоманда є версією Linux. Версія Windows все ще виводить лише просте "дерево".
Коул Джонсон

2

Ви можете використовувати mtreeдля цього. Див. Www.freebsd.org/cgi/man.cgi?query=mtree&sektion=8&manpath=FreeBSD+6.3-RELEASE та code.google.com/p/mtree-port

mtree -c

Це дуже універсально.


Це не вихід JSON, як я особисто вважаю за краще, але я впевнений, що користувачі Mac оцінять той факт, в який він вбудований.
Шрідхар Сарнобат,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.