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

692
Sridhar-Sarnobat

После долгих лет игры с несколькими базами данных 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 } }] }] } }] 

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

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

12

2 ответа на вопрос

14
heavyd

Вывод 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> 
Ого, это именно то, что я хочу. Мне было известно о команде `tree` (которая великолепна), но я не осознавал, что теперь она поддерживает анализируемые форматы. Sridhar-Sarnobat 9 лет назад 2
ПРИМЕЧАНИЕ. Эта команда `tree` является версией Linux. Версия для Windows по-прежнему выводит только простое «дерево». Cole Johnson 9 лет назад 1
2
user400344

Вы можете использовать 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 оценят тот факт, что он встроен. Sridhar-Sarnobat 9 лет назад 0

Похожие вопросы