Вопрос Может ли логическая структура файловой системы (включая цели символической ссылки) быть представлена ​​в одном легком файле (не двоичном)?


После нескольких лет работы с базами данных SQL и NoSQL я считаю, что лучший способ обеспечить переносимость моих личных приложений, ориентированных на данные, - полностью исключить все базы данных bonafide. Я вижу файловую систему как красивую парадигму базы данных, которая является переносимой, читаемой человеком и, следовательно, имеет долговечность, достаточную для типов личных приложений, которые я пишу. Это похоже на базу данных графа, которая обеспечивает древовидную структуру (хорошо для разбиения на разделы), с символическими ссылками для представления отношений «один-к-одному».

Есть ли способ экспортировать всю топологию файловой системы в виде одного файла? Выходной сигнал 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 }
            }]
        }]
    }
}]

но снова есть несколько способов представления типов файлов, и мне интересно, кто-то уже выполнил работу по созданию стандарта.

Обратите внимание, что я не хочу экспортировать содержимое файлов, что сделает экспорт намного больше, чем необходимо.


12
2017-12-19 21:37


происхождения




ответы:


Выходной сигнал 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>

14
2017-12-19 22:18



О, ничего себе, это именно то, чего я хочу. Я знал о tree (что удивительно), но я не понимал, что теперь он поддерживает форматы синтаксического анализа. - Sridhar-Sarnobat
ПРИМЕЧАНИЕ. tree команда - это версия Linux. Версия Windows по-прежнему выводит простое «дерево». - Cole Johnson


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

mtree -c

Это очень универсально.


2
2017-12-26 03:08



Это не выпуск JSON, как я лично предпочитаю, но я уверен, что пользователи Mac оценят тот факт, что он встроен. - Sridhar-Sarnobat